小编Jos*_*ndo的帖子

在 linux 中加入 mp4 文件

我想加入两个 mp4 文件来创建一个。视频流以 h264 编码,音频以 aac 编码。由于计算原因,我无法将视频重新编码为另一种格式。此外,我不能使用任何 GUI 程序,所有处理都必须使用 Linux 命令行实用程序执行。FFmpeg 无法对 mpeg4 文件执行此操作,因此我使用 MP4Box:

MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
Run Code Online (Sandbox Code Playgroud)

不幸的是,音频变得混乱了。我认为问题是音频在 aac 中,所以我将其转码为 mp3 并再次使用 MP4Box。在这种情况下,音频在newvideo.mp4(对应于video1.mp4)的前半部分很好,但随后它们没有音频,我也无法在视频中导航。

我的下一个想法是音频和视频流的长度存在一些小的差异,我应该修复。因此,对于每个输入视频,我拆分了视频和音频流,然后使用 FFmpeg 中的 -shortest 选项将它们连接起来。

因此,对于我运行的第一个视频:

 avconv -y -i video1.mp4 -c copy -map 0:0 videostream1.mp4
 avconv -y -i video1.mp4 -c copy -map 0:1 audiostream1.m4a
 avconv -y -i videostream1.mp4 -i audiostream1.m4a  -c copy -shortest  video1_aligned.mp4
Run Code Online (Sandbox Code Playgroud)

第二个视频类似,然后像以前一样使用 MP4Box。不幸的是,这也不起作用。我唯一的成功是当我分别加入视频流(即 videostream1.mp4 和 videostream2.mp4)和音频流(即 audiostream1.m4a 和 audiostream2.m4a),然后在最终文件中加入视频和音频。但是,视频的后半部分将丢失同步。具体来说,音频和视频有 1 秒的延迟。任何建议都非常受欢迎。

mp4 join concatenation

41
推荐指数
3
解决办法
6万
查看次数

标签 统计

concatenation ×1

join ×1

mp4 ×1