我有一个从图像创建的 mp4 视频文件,并想向其中添加 mp3 声音。我对视频编辑一点都不熟悉,但读到有人说 aac 声音是首选,所以我也得到了 aac 格式的声音。
结果的首选形式也是 mp4 或 flv。我的操作系统是 Ubuntu(Saucy Salamander)。
我在谷歌上搜索了很多,avconv并mencoder试图将找到的示例转换为我的案例,但没有任何成功。
你们中的任何一个,专家,请给我一个命令行示例,我该怎么做?
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)
确保音频文件和视频文件具有相同的持续时间。并非每个玩家都接受具有巨大持续时间差异的曲目。
请注意,avconv和ffmpeg几乎是一回事。事实上,这个使用 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 格式的混合文件的另一种选择是MP4Box从gpac包。