从视频中提取 M4A 音频并关联艺术作品

从视频中提取 M4A 音频并关联艺术作品

为什么在 Ubuntu 12.04 上,当我从视频(MP4 或 FLV 等)中提取 M4A 格式的音频时avconv

avconv -i video.mp4 -c:a libvo_aacenc sound.m4a 

其中有一个视频流,如果我只想要音频流,我必须添加选项-vn,如下所示:

avconv -i video.mp4 -c:a libvo_aacenc -vn sound.m4a

我的意思是,M4A 不是一种音频格式吗?


可以将艺术作品添加到音频输出吗?

用这个命令我可以提取一帧,

avconv -i vid.mp4 -vsync 1 -frames 1 -s 1024x768 -an -y image.jpeg

但是否可以将其与音频输出关联?我猜解决方案是两者的一部分,但我搞不清楚。

答案1

.m4a只是另一个常用的文件扩展名MPEG-4 第 14 部分容器,通常称为 MP4。该容器可以承载视频、音频和字幕。扩展名不会改变这一事实,尽管通常情况下,您只会将音频放入.m4a文件中,将视频放入.m4v文件中。

请参阅维基百科了解更多信息:

… 由于 MPEG-4 Part 14 是一种容器格式,MPEG-4 文件可能包含任意数量的音频、视频甚至字幕流,因此无法仅根据其文件扩展名来确定 MPEG-4 文件中的流类型。为此,Apple Inc. 开始使用并推广 .m4a 文件扩展名,该扩展名用于 MP4 容器,其中包含有损高级音频编码 (AAC) 或其自己的无损 Apple Lossless (ALAC) 格式的音频数据。能够播放音频/视频的软件应该能够识别文件扩展名为 .m4a 或 .mp4 的文件,这是意料之中的,因为两者之间没有文件格式差异。大多数能够创建 MPEG-4 音频的软件都允许用户选择所创建 MPEG-4 文件的文件扩展名。


如果您希望将静态图片与音频一起显示,则必须将其转换为视频。例如,创建所需的帧并将其命名为image.png(或image.jpg):

avconv -i input.mp4 -frames:v 1 image.png 

这将为您提供视频的第一帧。如果您想要其他时间戳的帧,请在跳转-ss之前添加选项,例如 10 秒: 。-iavconv -ss 10 -i …

然后:

avconv -i input.mp4 -i image.png \
-c:v libx264 -pix_fmt yuv420p -r 1 -c:a copy -map 0:a:0 -map 1 output.mp4

在这里,选择 x264 来从静态图像编码视频,然后从原始文件中复制音频流。帧速率-r 1应该足够了,尽管你可以省略这部分。

使用 可以-map 0:a:0从第一个文件选择第一个音频流,使用 可以-map 1选择要混入输出的图像。(\只是为了避开换行符。)

这些-map开关适用于最近(和不错的)最新的 FFmpeg 版本——但我不能谈论 Ubuntu 的 Libav。如果它不适合您下载 FFmpeg


如果要设置文件的专辑封面.m4a,请使用原子欧芹

AtomicParsley input.m4a --artwork image.jpg

这将创建一个新文件,其中嵌入了图片作为艺术作品,现在大多数媒体播放器都可以正确显示。要覆盖输入文件本身,--overWrite也请使用开关。

相关内容