我怎样才能连接或合并 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
干杯