如何将音频文件(aac 或 mp3)添加到 mp4 视频文件?

use*_*202 8 multimedia

我有一个从图像创建的 mp4 视频文件,并想向其中添加 mp3 声音。我对视频编辑一点都不熟悉,但读到有人说 aac 声音是首选,所以我也得到了 aac 格式的声音。

结果的首选形式也是 mp4 或 flv。我的操作系统是 Ubuntu(Saucy Salamander)。

我在谷歌上搜索了很多,avconvmencoder试图将找到的示例转换为我的案例,但没有任何成功。

你们中的任何一个,专家,请​​给我一个命令行示例,我该怎么做?

tho*_*hom 14

这在一定程度上取决于您的流在 mp4 文件中的映射方式。这样的事情应该工作:

ffmpeg -i video.mp4 -i audio.aac -map 0:0 -map 1:0 -vcodec copy -acodec copy newvideo.mp4
Run Code Online (Sandbox Code Playgroud)

通常视频流被映射为容器中的第一个流。
如果它没有映射为第一个流,请更改映射:

ffmpeg -i video.mp4 -i audio.aac -map 0:1 -map 1:0 -vcodec copy -acodec copy newvideo.mp4
Run Code Online (Sandbox Code Playgroud)

要了解您的视频文件中的流实际上是如何映射的,您可以使用mediainfo现在标准 Ubuntu 存储库中的内容。

如果我们在这里分解命令行,它的工作方式如下:

-i video.mp4  -> first media file
-i audio.aac  -> second media file
-map 0:1      -> use the second stream from the first mediafile
-map 1:0      -> use the first stream from the second mediafile
-vcodec copy  -> leave the video as is
-acodec copy  -> leave the audio as is
newvideo      -> resulting videofile
Run Code Online (Sandbox Code Playgroud)

确保音频文件和视频文件具有相同的持续时间。并非每个玩家都接受具有巨大持续时间差异的曲目。

请注意,avconvffmpeg几乎是一回事。事实上,这个使用 avconv 的命令也像使用 ffmpeg 的命令一样工作:

avconv -i video.mp4 -i audio.aac -map 0:0 -map 1:0 -vcodec copy -acodec copy newvideo.mp4  
Run Code Online (Sandbox Code Playgroud)

avconv 程序属于 Libav 项目,是 FFmpeg 项目的一个分支。您也可以放心地忽略以下错误消息:

*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Run Code Online (Sandbox Code Playgroud)

MP4 格式的混合文件的另一种选择是MP4Boxgpac包。