我有一个 mkv 文件,只有音频,并且我附加了封面艺术,但是当我将其转换为 mp3 时,艺术作品并没有添加到 mp3 中。
我用来附加封面艺术的命令是唯一一个没有以 mkv 格式生成封面艺术视频流的命令,但这种方式似乎将封面艺术限制为仅限 mkv,而且我无法将其转换为 mp3,请参阅以下过程:
输出:ffprobe mkv_without_cover.mkv
Input #0, matroska,webm, from 'mkv_without_cover.mkv':
Metadata:
title : Cuidado!
ARTIST : Lobão
ALBUM : CMG Clássicos Pop Rock Nacionais
GENRE : Clássico Pop Rock Nacional
TKEY : E m
DATE : 1988
ENCODER : Lavf59.17.102
Duration: 00:03:26.63, start: 0.000000, bitrate: 322 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
ENCODER : Lavc59.12
DURATION : 00:03:26.628000000
在 mkv 中附加封面艺术的命令:
ffmpeg -i "mkv_without_cover.mkv" -attach "art_cover.jpeg" -map 0 -c copy -metadata:s:t mimetype="image/jpg" -metadata:s:t:0 filename="cover.jpg" "mkv_with_cover.mkv"
输出:attach 命令
Input #0, matroska,webm, from 'mkv_without_cover.mkv':
Metadata:
title : Cuidado!
ARTIST : Lobão
ALBUM : CMG Clássicos Pop Rock Nacionais
GENRE : Clássico Pop Rock Nacional
TKEY : E m
DATE : 1988
ENCODER : Lavf59.17.102
Duration: 00:03:26.63, start: 0.000000, bitrate: 322 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
ENCODER : Lavc59.12
DURATION : 00:03:26.628000000
Output #0, matroska, to 'mkv_with_cover.mkv':
Metadata:
title : Cuidado!
ARTIST : Lobão
ALBUM : CMG Clássicos Pop Rock Nacionais
GENRE : Clássico Pop Rock Nacional
TKEY : E m
DATE : 1988
encoder : Lavf59.17.102
Stream #0:0: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
ENCODER : Lavc59.12
DURATION : 00:03:26.628000000
Stream #0:1: Attachment: none
Metadata:
mimetype : image/jpg
filename : cover.jpg
Stream mapping:
Stream #0:0 -> #0:0 (copy)
**art_cover.jpeg -> Stream #0:1**
Press [q] to stop, [?] for help
size= 8398kB time=00:03:26.62 bitrate= 332.9kbits/s speed=3.78e+03x
video:0kB audio:8071kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 4.046549%
问题似乎在于封面艺术附加到 mkv 的方式,附加方式没有为封面艺术定义特定的编解码器。
封面图片已成功添加到 mkv_with_cover 文件的流 #0:1,但 ffprobre 显示一些与附件编解码器相关的警告,如下所示:
输出:ffprobe mkv_with_cover.mkv
[matroska,webm @ 0000026d25388d00] Could **not find codec** parameters for **stream 1** (Attachment: none): unknown codec
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'output_mkv_with_cover.mkv':
Metadata:
title : Cuidado!
DATE : 1988
ARTIST : Lobão
ALBUM : CMG Clássicos Pop Rock Nacionais
GENRE : Clássico Pop Rock Nacional
TKEY : E m
ENCODER : Lavf59.17.102
Duration: 00:03:26.63, start: 0.000000, bitrate: 332 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
ENCODER : Lavc59.12
DURATION : 00:03:26.628000000
Stream #0:1: Attachment: **none**
Metadata:
filename : cover.jpg
mimetype : image/jpg
**Unsupported** codec with id 0 for input stream 1
将命令 mkv 转换为 mp3:
ffmpeg -i "mkv_with_cover.mkv" -c:a copy "song.mp3"
converte 命令的输出
[matroska,webm @ 0000020a74908dc0] Could **not find codec** parameters for **stream 1** (Attachment: none): **unknown codec**
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'mkv_with_cover.mkv':
Metadata:
title : Cuidado!
DATE : 1988
ARTIST : Lobão
ALBUM : CMG Clássicos Pop Rock Nacionais
GENRE : Clássico Pop Rock Nacional
TKEY : E m
ENCODER : Lavf59.17.102
Duration: 00:03:26.63, start: 0.000000, bitrate: 332 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
ENCODER : Lavc59.12
DURATION : 00:03:26.628000000
Stream #0:1: Attachment: none
Metadata:
filename : cover.jpg
mimetype : image/jpg
Output #0, mp3, to 'song.mp3':
Metadata:
TIT2 : Cuidado!
TDRC : 1988
TPE1 : Lobão
TALB : CMG Clássicos Pop Rock Nacionais
TCON : Clássico Pop Rock Nacional
TKEY : E m
TSSE : Lavf59.17.102
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s
Metadata:
ENCODER : Lavc59.12
DURATION : 00:03:26.628000000
Stream mapping:
**Stream #0:0 -> #0:0 (copy)**
Press [q] to stop, [?] for help
size= 8073kB time=00:03:26.62 bitrate= 320.0kbits/s speed=4.22e+03x
video:0kB audio:8071kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.015027%
转换忽略流#0:1,并且封面艺术不会添加到 mp3 文件输出中。
我在转换中也使用了以下命令,它们都仅在 mp3 文件的输出中生成音频,如下所示:
ffmpeg -i "mkv_with_cover.mkv" -map 0:0 -c:v copy -c:a copy "song.mp3"
错误消息:无法找到流 1 的编解码器参数
ffmpeg -i "mkv_with_cover.mkv" -map 0:0 -vcodec copy -c:a copy "song.mp3"
错误消息:无法找到流 1 的编解码器参数
ffmpeg -i "mkv_with_cover.mkv" -vcodec copy -c:a copy "song.mp3"
错误消息:无法找到流 1 的编解码器参数
ffmpeg -i "mkv_with_cover.mkv" -map 0:1 -vcodec copy -c:a copy "song.mp3"
错误消息:MP3 中仅允许音频流和图片。无法为输出文件 #0 写入标头
如何将此 mkv 文件中的封面艺术包含在转换为 mp3 的文件中?
谢谢
答案1
我终于找到问题了!
在 mimetype="image/图片“场,图片, 必须JPEG格式以便 mjpeg 编解码器可以对图像进行编码。
实际情况是,mjpeg 编解码器在命令中查找信息,以便能够正确编码图像,此信息位于 mimetype="image/jpg" 字段中。请注意,jpg 在哪里,它必须是 jpeg。正如我发布的命令中一样,字段是 jpg,编解码器尽管没有给出错误,但只是附加了图像而没有任何编码,这在转换时造成了许多问题。
因此,图像在未编码的情况下就被粘贴,并且出现与我上面发布的编解码器相关的错误。
正确的命令是:
ffmpeg -i "mkv_without_cover.mkv" -attach "art_cover.jpeg" -map 0 -c copy -metadata:s:t mimetype="image/jpeg" -metadata:s:t:0 filename="cover.jpeg" "mkv_with_cover.mkv"
谢谢