使用ffmpeg加入多个视频中的片段

时间:2018-07-05 14:31:02

标签: ffmpeg concat

我们正在尝试建立一个流程,使用户可以将多个视频中的片段合并在一起。我们的流程设置为使用ffmpeg为每个片段制作单独的mp4文件,然后使用ffmpeg concat demuxer流程将其加入。在生成段mp4文件时,我们尝试使它们在编解码器,尺寸等方面都相同,以便串联成功。这是创建段mp4之一的调用示例。

ffmpeg -ss 0.5 -t 299.5 -i /tmp/vid1.mp4 -c:v libx264 -c:a aac -framerate 29.97 -b:v 540k -maxrate 540k -minrate 540k -bufsize 540k -vf scale=640:480,fade=t=out:st=294.5:d=5 /tmp/vid1_new.mp4

此过程在某些情况下有效,但在另一些情况下,加入的文件将正确播放第一个片段,但随后的片段有时会冻结视频,或加快音频速度。有人对如何使上述ffmpeg命令更“防弹”有任何建议,以便所有文件都兼容吗?


我们用来连接文件的命令是:

/var/ffmpg/bin/ffmpeg -f concat -safe 0 -i /tmp/files.txt -c copy /tmp/combined.mp4

一个文件的ffprobe输出为:

{
  "format": {
    "filename": "vid2.mp4",
    "nb_streams": 2,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime / MOV",
    "start_time": "0.000000",
    "duration": "1004.944000",
    "size": "109489681",
    "bit_rate": "871608",
    "probe_score": 100,
    "tags": {
      "major_brand": "isom",
      "minor_version": "512",
      "compatible_brands": "isomiso2avc1mp41",
      "encoder": "Lavf54.63.103"
    }
  }
}

第二个文件的ffprobe输出:

{
  "format": {
    "filename": "vid1.mp4",
    "nb_streams": 2,
    "nb_programs": 0,
    "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
    "format_long_name": "QuickTime / MOV",
    "start_time": "0.000000",
    "duration": "1159.164000",
    "size": "63903454",
    "bit_rate": "441031",
    "probe_score": 100,
    "tags": {
      "major_brand": "isom",
      "minor_version": "512",
      "compatible_brands": "isomiso2avc1mp41",
      "encoder": "Lavf56.40.100"
    }
  }
}

0 个答案:

没有答案