我使用 Zeranoe 版本的 FFmpeg。就音频流而言,它可以很好地将 mp3 文件转换为 m4a 文件,但我无法找到一种方法来保留歌曲专辑封面 jpeg,因为 ffmpeg 出于某种原因将其识别为
Stream #0:1: Video: mjpeg, yuvj420p, 200x200 [SAR 120:120 DAR 1:1]
包含在output.m4a
文件中。当我使用以下命令行时:
ffmpeg.exe -i 09.mp3 -map 0 -codec:a libvo_aacenc -ab 320k -ar 44100 -ac 2 -codec:v copy output.m4a
我收到no tag, codec not currently in the container
错误。但是,当我.m4a
使用 iTunes 处理的文件运行 ffprobe 时,它就出现了:
Stream #0:1: Video: mjpeg, yuvj420p, 350x350 [SAR 72:72 DAR 1:1]
那么,有没有办法使用 ffmpeg 转换来复制歌曲封面?
答案1
就我而言,没有简单的方法可以告诉 FFmpeg 为 MP4 容器设置专辑封面,而这通常用于 AAC 音频 ( .m4a
)。不过,你可以使用原子欧芹稍后通过命令行添加艺术品。
安装 AtomicParsley 的方法如下:
- 所有操作系统都有来自SourceForge 页面
- Linux 发行版可能在软件包中包含它,即
apt-get install atomicparsley
- 通过 OS X自制和
brew install atomicparsley
但首先,我们需要提取艺术品,例如作为 JPEG 文件:
ffmpeg -i input.mp3 artwork.jpg
然后我们可以使用 AtomicParsley 添加专辑封面:
AtomicParsley output.m4a --artwork artwork.jpg
这不会覆盖原始文件,而是创建一个临时文件,例如output-temp-15274.m4a
。如果要覆盖原始文件,请--overWrite
在命令中添加选项,例如:
AtomicParsley output.m4a --artwork artwork.jpg --overWrite
瞧瞧:
答案2
也许这个答案有点晚了,但对于那些感兴趣的人来说,你现在可以只使用 ffmpeg 保留所有流,如下所示:
# single file
ffmpeg -nostdin -i /path/to/input.flac -c:a alac -c:v copy /path/to/output.m4a
# all the .flac files in the folder
for m in *.flac; do ffmpeg -nostdin -i "$m" -c:a alac -c:v copy "${m%.*}.m4a"; done
欲了解更多信息,请参阅以下输入/输出流:
输入:
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 800x800 [SAR 96:96 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
输出:
Stream #0:0(und): Audio: alac (alac / 0x63616C61), 44100 Hz, stereo, s16p, 888 kb/s (default)
Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 800x800 [SAR 96:96 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
答案3
FFmpeg 有一个未决问题此功能。与此同时,可以使用TagEditor 项目。 加上:
tageditor -s cover=ju.jpg --max-padding 100000 -f ki.m4a
去除:
tageditor -s cover= --max-padding 100000 -f ki.m4a
答案4
有用的Windows批处理文件:
@ECHO OFF
REM Extracting album cover art and resizing to 300x300 into temporary file in PNG format
REM because FFMPEG can’t handle properly cover art directly...
ffmpeg -i %1 -an -vcodec png -vf scale=300:-1 __arttemp__.png -y
REM timeout 30
REM Converting audio to AAC LLC into .M4A container (Apple "Signed")
REM The FFMPEG does not apply LowPass filter, but there is not so
REM much control over other parameters, but in tests was the righest
REM VBR rate (350~400 Kbps)...
ffmpeg -i %1 -acodec aac -ab 512k -ac 2 -vn %2 -y
REM timeout 30
REM Applying already cover art image extracted from original file
REM with this new "AtomicParsley"...
AtomicParsley %2 --artwork __arttemp__.png --overWrite
REM timeout 30
REM Deleting temporary cover art file...
del __arttemp__.jpg
REM timeout 30