MP4 重新编码以保证无需重新编码即可连接

MP4 重新编码以保证无需重新编码即可连接

我有 2 个 mp4 视频在使用时无法连接:

MP4Box -add 1.mp4 -cat 2.mp4 out.mp4

有没有办法重新编码 2.mp4,以便 concat 调用创建有效的输出?可能使用 ffmpeg 吗?我只能重新编码一个文件,并且我希望连接不进行任何编码。

我目前遇到的这两个文件的错误是:

[iso 文件] 盒子“minf”有 56 个额外字节 附加 2.mp4 时出错:IsoMedia 文件被截断

答案1

您可以尝试使用 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

相关内容