FFmpeg 可以将 mp3 文件完全转换为 m4a,即复制音频和视频流(jpeg 封面)吗?

USI*_*KPA 2 mp3 ffmpeg m4a

我使用 FFmpeg 的 Zeranoe 构建。就音频流而言,它将 mp3 文件转换为 m4a 文件就好了,但我想不出一种方法来保留歌曲专辑封面 jpeg,ffmpeg 出于某种原因将其识别为

Stream #0:1: Video: mjpeg, yuvj420p, 200x200 [SAR 120:120 DAR 1:1]
Run Code Online (Sandbox Code Playgroud)

包含在output.m4a文件中。当我使用以下命令行时:

ffmpeg.exe -i 09.mp3 -map 0 -codec:a libvo_aacenc -ab 320k -ar 44100 -ac 2 -codec:v copy output.m4a
Run Code Online (Sandbox Code Playgroud)

我得到了no tag, codec not currently in the container错误。然而,当我使用.m4aiTunes处理的文件运行 ffprobe 时,它是:

Stream #0:1: Video: mjpeg, yuvj420p, 350x350 [SAR 72:72 DAR 1:1]
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法通过ffmpeg转换来复制歌曲封面?

slh*_*hck 6

就我而言,没有简单的方法可以告诉 FFmpeg 为 MP4 容器设置专辑插图,您通常将其用于 AAC 音频 ( .m4a)。但是,您可以稍后通过命令行使用AtomicParsley添加图稿。

以下是安装 AtomicParsley 的方法:

  • 所有操作系统都有来自SourceForge 页面的二进制文件
  • Linux 发行版可能在包中包含它,即 apt-get install atomicparsley
  • OS X通过自制brew install atomicparsley

但首先,我们需要提取艺术品,例如作为 JPEG 文件:

ffmpeg -i input.mp3 artwork.jpg
Run Code Online (Sandbox Code Playgroud)

然后我们可以使用 AtomicParsley 添加专辑插图:

AtomicParsley output.m4a --artwork artwork.jpg 
Run Code Online (Sandbox Code Playgroud)

这不会覆盖原始文件,而是创建一个临时文件,例如output-temp-15274.m4a. 如果要覆盖原始文件,请--overWrite在命令中添加选项,例如:

AtomicParsley output.m4a --artwork artwork.jpg --overWrite
Run Code Online (Sandbox Code Playgroud)

瞧: