更改视频帧速率并保持持续时间不变

时间:2017-06-13 19:34:26

标签: video ffmpeg frame-rate

我正在尝试对视频文件进行分段,对每个片段进行转码,然后将它们全部拼接回一个。该过程正在运行,但我注意到最终文件的持续时间与原始文件的持续时间不同。可能是因为我正在转码为与源帧速率不同的固定帧速率。

要分割我使用的视频:

ffmpeg -y -i video_only.mp4 -c copy -flags -global_header -segment_time 50 -break_non_keyframes 0 -reset_timestamps 0 \
  -segment_list file_segs.list -segment_format mp4 -segment_list_type ffconcat -write_empty_segments 0 \
  -f segment file_seg-%d.mp4

然后,使用此命令对每个段进行转码:

ffmpeg -y -i $f -vcodec libx264 -vsync 1 -crf 18 -vf "fps=30" -pix_fmt yuv420p -preset:v fast -profile:v main -level:v 4.1 transcoded/$f

最后,concat:

ffmpeg -y -f concat -i file_segs.list -c:v copy -c:a copy -movflags +faststart video_final.mp4

我尝试在过滤器(-vf)上使用“-r 30”,结果相同。 由于这是转码系统的一部分,我不想在转码之前检查输入文件fps,因为它可以是任何东西 - 变量fps(也不容易检测)

在这种转码流程中改变帧速率时,有什么方法可以保持持续时间不变?

0 个答案:

没有答案