视频片段的两个ffmpeg命令的比较

问题描述

我有两个命令可以在 android ffmpeg 中制作视频片段

  • -ss startTime -i inputVideo -f segment -segment_time segmentDuration -reset_timestamps 1 -vcodec copy -b:v2 097152 -b: a 48000 -ac 2 -ar 22050 outputPath
  • -ss startTime -i inputVideo -f segment -segment_time segmentDuration -reset_timestamps 1 outputPath

我已经尝试了它们,并注意到第一个命令比第二个命令非常快

由于我是 ffmpeg 的新手,我真的不知道这些命令中每个参数的含义

谁能解释一下为什么第一个命令更好,将来会不会导致任何错误

解决方法

在命令 #1 中,您使用 -vcodec copy 为视频启用 stream copy 模式。这会复制视频而不是对视频进行编码。流复制比编码快得多。

缺点是默认情况下 segment muxer 只能在使用流复制时剪切关键帧。因此,使用流复制时 -segment_time 可能不准确。

如果准确性非常重要,那么删除 -vcodec copy 就像在命令 #2 中一样。这将对视频进行编码,而不是流式复制视频:速度慢得多,但剪切准确。