转换为 mp3 文件时未添加 mkv 文件的封面图片

转换为 mp3 文件时未添加 mkv 文件的封面图片

我有一个 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"

谢谢

相关内容