zoukankan      html  css  js  c++  java
  • 使用ffmpeg合并视频文件的三种方法

    ffmpeg合并视频的方法有三种。国内大多数仅介绍了其中之一。于是觉得有必要翻译一下。其实在ffmpeg的 FAQ文档中有比较详细的说明。

    1. 使用concat协议进行视频文件的合并

      这种方式的适用场景是:视频容器是MPEG-1, MPEG-2 PS或DV等可以直接进行合并的。换句话说,其实可以直接用cat或者copy之类的命令来对视频直接进行合并。很多文章介绍了这种方法,但适用性却没有提及。这并不是一个通用的方法。典型的命令示例如下:

      ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
    2. 使用concat demuxer进行视频文件的合并

      这种合并方式的适用场景是:当容器格式不支持文件层次的合并,而又不想(不需要)进行再编码的操作的时候。这种方式对源视频同样有同格式同性质的要求。其详细语法参见 这里。典型的命令示例如下:

      ffmpeg -f concat -i Cam01.txt -c copy Cam01.mp4

      其中,Cam01.txt 为包含了输入文件的描述文件。

    3. 使用concat滤镜(filter)进行视频文件的合并:

      当需要进行任意程度的重新编解码时,官方推荐使用的方法即是用concat滤镜来进行视频文件的合并处理。详细说明参见 这里。典型命令示例如下:

      ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex 
        '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
         concat=n=3:v=1:a=2 [v] [a1] [a2]' 
        -map '[v]' -map '[a1]' -map '[a2]' output.mkv

      这段命令目的是将三段双语格式的视频合并至最终的一段视频(output.mkv)。参数n=3说明待合成的视频有三段,v=1说明视频流为一,a=2说明音频流为二。 -map参数的详细说明可以从Filtergraph文档中找到。

  • 相关阅读:
    iOS 文本展开收起
    iOS 图片拉伸压缩展示对比
    iOS 视图在最前显示的两种实现方式对比
    iOS UITableView上滑吸顶的三种方案
    iOS UITableView在 UITableViewStyleGrouped样式下第一组组头变高问题
    友盟统计 实时统计使用
    RN 侧滑删除功能实现
    RN 使用Radio实现单选
    RN 使用Checkbox实现多选
    iOS开发加密
  • 原文地址:https://www.cnblogs.com/jameszh/p/5547525.html
Copyright © 2011-2022 走看看