使用命令行工具Concat mp4文件

时间:2016-12-31 22:10:59

标签: ffmpeg mp4 concat mp4box

我被封锁试图做某事,如果有人可以帮助我,我准备捐款了:

我尝试在一个输出mp4文件中连接http://s.serero.free.fr/rolex.mp4视频和http://s.serero.free.fr/video.mp4视频,我尝试了很长时间没有结果。

我想结束http://s.serero.free.fr/rolex.mp4 + http://s.serero.free.fr/video.mp4http://s.serero.free.fr/video.mp4 + http://s.serero.free.fr/rolex.mp4

我尝试使用ffmpeg命令行软件和mp4box命令行软件,我认为我没有很好的方法。

我尝试以http://s.serero.free.fr/video.mp4的相同格式转换http://s.serero.free.fr/rolex.mp4(反之亦然):

我使用相同的http://s.serero.free.fr/rolex.mp4

帧速率转换了http://s.serero.free.fr/video.mp4

我使用http://s.serero.free.fr/rolex.mp4

的相同视频比特率转换http://s.serero.free.fr/video.mp4

我使用http://s.serero.free.fr/rolex.mp4

的相同视频音频比特率转换http://s.serero.free.fr/video.mp4

有人能帮助我吗?

向我解释我的策略有什么问题?

2 个答案:

答案 0 :(得分:1)

您的输入参数会有所不同,因此在连接之前必须使它们相似。

  • rolex.mp4

    Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 835 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)
    Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
    
  • video.mp4

    Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1152x720, 1749 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, s16p, 127 kb/s (default)
    

此示例会使video.mp4更像rolex.mp4,然后将它们连接起来:

ffmpeg -i rolex.mp4 -i video.mp4 -filter_complex \
"[1:v]pad=1280:720:(ow-iw)/2:0,fps=25,format=yuv420p[v1]; \
 [0:v][0:a][v1][1:a]concat=n=2:v=1:a=1[v][a]" \
-map "[v]" -map "[a]" output.mp4

您实际上不需要声明fpsformat,因为concat filter documentation状态:

  

所有相应的流必须具有相同的参数   段;过滤系统会自动选择一个共同的   视频流的像素格式,以及常见的样本格式,示例   音频流的速率和频道布局,但其他设置,如   分辨率,必须由用户明确转换。

...但这样做可以让您手动选择“常用”设置,而不是自动选择过滤器并可能选择您不想要的设置。

答案 1 :(得分:0)

感谢LordNeckbeard的出色回答,他只是对这个命令犯了一点错误,我只想稍微解释一下:

如果我想使用rolex.mp4(1280X720)连接video.mp4(1152X720),我们必须明白" video.mp4" 是主要视频,因此要连接的视频必须具有完全相同的帧大小

因此,在执行此操作之前,您需要使用ffmpeg调整与video.mp4相同大小的rolex.mp4视频:

ffmpeg -i rolex.mp4 -s 1152x720 -c:复制newrolexsized.mp4

没有video.mp4和newrolexsized.mp4具有相同的帧大小,您可以使用命令(spcifying pad = 1152:720 =>主视频的大小):

ffmpeg -i video.mp4 -i newrolexsized.mp4 -filter_complex" [1:v] pad = 1152:720:(ow-iw)/ 2:0,fps = 25,format = yuv420p [v1 ]; [0:v] [0:一个] [V1] [1:A]的concat = N = 2:v = 1:A = 1 [v] [A]" -map" [v]" -map" [a]" out.mp4