如何合并或连接两个或多个 MP4 文件以创建另一个 MP4 文件?

如何合并或连接两个或多个 MP4 文件以创建另一个 MP4 文件?

我怎样才能连接或合并 2 个或多个 MP4 文件,并在最终输出 MP4 文件中输出?

我曾尝试在 DOS 窗口中使用 COPY 命令(我曾在某处读到过它)但是它不能正常工作。

答案1

MP4Box 可以做到这一点,尽管你可能想使用 GUI,例如山药或者我的 MP4Box 图形用户界面. (注:不是我的程序个人而言,这只是名字。)Windows 的 MP4Box 二进制文件可从本网站

例子:

MP4Box -tmp $HOME -add vid.01.m4v \
    -cat vid.02.m4v -cat vid.03.m4v vid-out.mp4

答案2

我推荐使用ffmpeg适用于 Mac OS X、Linux 和视窗

这是一个关于如何连接两部电影的很好的例子: http://www.ffmpeg.org/faq.html#SEC27

在最后一步,您只需要确保为生成的文件制作一个 MP4 容器。

答案3

您可以尝试使用 ffmpeg 执行此操作:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

这不会重新编码任何内容,而是将它们放在新的传输流容器中,这使得它们更容易连接,然后将它们连接回 MP4。如果 output.mp4 已经存在,则命令将失败。上面的版本使用命名管道,如果你的系统不支持这些管道,你必须使用中间文件:

ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -absf aac_adtstoasc output.mp4

答案4

我在用 ffmpeg 将它们转换为 avi 之后,用 mencoder 进行操作

这是一个简单的脚本,假设你有 15 个文件,名为 01.mp4 ... 15.mp4

#!/bin/bash
for j in `seq -w 1 15`;
do
    echo converting file $j.avi
    ffmpeg -i $j.mp4 $j.avi        

    echo adding file $j.avi to list
    z="$z $j.avi"
done 

echo doing append
mencoder -oac copy -ovc copy $z -o all.avi

干杯

相关内容