【问题标题】:Concat mp4 files with a command line tool使用命令行工具连接 mp4 文件
【发布时间】:2016-12-31 22:10:59
【问题描述】:

我被阻止尝试做某事,如果有人可以帮助我,我准备捐款:

我尝试将 http://s.serero.free.fr/rolex.mp4 视频和 http://s.serero.free.fr/video.mp4 视频连接到一个输出 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/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的相同视频音频比特率转换了http://s.serero.free.fr/rolex.mp4

有人可以帮助我吗?

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

【问题讨论】:

    标签: ffmpeg mp4 concat mp4box


    【解决方案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 所述:

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

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

    【讨论】:

    【解决方案2】:

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

    如果我想将 video.mp4(1152X720) 与 Rolex.mp4(1280X720) 连接,我们必须了解“video.mp4”是主要视频,因此要连接的视频必须具有完全相同的帧大小

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

    ffmpeg -i rolex.mp4 -s 1152x720 -c:a copy 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:a][v1][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a] " out.mp4

    【讨论】:

    • 他的命令是正确的。您在他的命令中切换了输入顺序。在您的输入中,rolex.mp4 是第二个输入。
    猜你喜欢
    • 2013-08-30
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多