如何使用ffmpeg将元数据添加到AAC文件而无需重新编码?


13

我正在使用ffmpeg从视频文件中仅提取音频流:

ffmpeg -i video.mp4 -vn -acodec copy audio.aac

这样会产生干净的音频文件,但没有任何元数据。

要添加元数据,ffmpeg具有命令行选项:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.aac

这可以正常运行,但是用ffprobe检查输出文件时,它根本没有元数据标签。

如果将输出容器更改为mp4,则可以设置元数据并将其显示在输出文件中:

ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.mp4

这是有趣的一点;如果我使用Banshee编辑现有.aac文件的元数据,然后使用ffmpeg以相同的方式处理该文件,则原始元数据将成功复制到新的.aac文件中。

ffmpeg -i metadata.aac -vn -acodec copy audio.aac

但是,尝试更改元数据无效:

ffmpeg -i metadata.aac -vn -acodec copy -metadata title="My Title" audio.aac

因此,似乎.aac容器可以容纳元数据,而ffmpeg可以将其从输入复制到输出,但是在使用复制编解码器时不能更改它。

有谁知道一种使ffmpeg更改aac容器中的元数据而无需重新编码的方法吗?

或者,在处理完文件后,是否可以使用另一个通用工具来设置元数据?

非常感谢。克里斯。

Answers:


12

目标是从视频文件生成纯音频文件而无需重新编码,并引入媒体播放器可识别的元数据。环境是Debian GNU / Linux。

我要感谢@bootload使我处于正确答案的道路上。

ffmpeg似乎不支持将元数据标签添加到.AAC输出文件,但是,这是两种可能的解决方法。

  1. 命令行实用程序id3和id3v2(可从标准存储库中获得)可以将id3标记应用于.aac音频文件。Nautilus可以识别v1和v2标记样式,因此两者都应该起作用。Banshee媒体播放器可以识别相同的标签。
id3v2 -t "My Title" audio.aac
  1. ffmpeg可以将元数据添加到MP4容器中,但是Nautilus中的.mp4扩展名将显示为视频文件。Apple Inc.使用MP4容器的非标准扩展名来区分视频文件(.m4v)和音频文件(.m4a)。Nautilus和ffmpeg可以在Debian下识别这些扩展。所以,
ffmpeg -i video.mp4 -vn -acodec copy -metadata title="My Title" audio.m4a

将产生Nautilus识别的纯音频文件,并且ffmpeg可以安全地将元数据添加到容器中。


3

预期的硬件是什么?是否适用于Apple iP *设备?如果是这样,请尝试http://atomicparsley.sourceforge.net/, 否则请尝试使用“ UTF-8编码的INI” mex / demux方法尝试http://ffmpeg.org/ffmpeg.html#Examples。(将元数据提取为utf8文件并修改并重新插入)。


环境是Debian GNU / Linux。
克里斯·C

尽管文档链接显示了生成的文件格式,但ffmpeg文档尚不清楚如何使用元数据多路复用器/多路分解器。您能否提供一个命令行示例来说明如何实现?谢谢。
克里斯·C

@ChrisC看起来不太好。如果不经过aac和ffmpeg规范进行验证,就好像在这里列出了ffmpeg 尊重的元数据〜wiki.multimedia.cx / index.php ? title=FFmpeg_Metadata#Basic_Usage和acc不被支持。例如,将cli用于其他格式时,请遵循以下模式:'ffmpeg -i track05.wav -metadata title =“ Track#5” -metadata author =“ Unknown Artist” -acodec alac -y track05.m4a。通用模式为ffmpeg -i <SOURCE> -metadata key =“ value” <SOURCE>。这正是您遵循的过程:(
bootload

让我们变得非常具体。您要编码为元数据的格式是什么?我们在说ID3吗?您最终将使用哪种格式?
引导装载

我环顾四周,看看AAC支持什么。可能没有正式的格式,但是在Debian中,ID3V1和ID3V2似乎都可以工作。Banshee在使用其编辑器时似乎正在放置ID3V2标签。
克里斯·C

1

MP4Box(“ gpac”软件包的一部分)使用MP4容器封装了AAC文件,而不会更改原始数据。然后几乎可以使用任何标记软件来添加元数据:

MP4Box -add old.aac new.mp4
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.