用ffmpeg改变播放速度的正确方法是什么?

时间:2015-05-21 10:38:25

标签: performance ffmpeg playback

在我的项目中,我使用ffmpeg播放媒体。目前我正试图实现播放速度的改变。以高速率丢弃某些数据包是否正确,例如关键帧?或者我应该只依赖于改变时间戳和持续时间,即使性能很低(例如4k视频),因此提高速度是不是很明显?

2 个答案:

答案 0 :(得分:8)

如果您的文件包含标准PTS参考信息,我认为更改回放速度的最佳方法是使用setpts过滤器。

例如,要通过x2加速视频,请尝试:

ffplay [INPUT] -vf setpts=0.5*PTS

过滤器也适用于FFmpeg

答案 1 :(得分:3)

ffplay [INPUT] -vf setpts=0.5*PTS将删除帧以达到所需的速度。您可以通过指定比输入更高的输出帧速率来避免丢帧。

要保留所有帧,只需将帧速率提高4倍,并将速度提高为exec:

ffmpeg -i input.mkv -r NEW_FPS -filter:v "setpts=0.25*PTS" output.mkv

其中NEW_FPS = old_fps * 4

  • 检查帧率:ffprobe video_name

  • 检查帧数:

    ffprobe -v error -count_frames -select_streams v:0   -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 video_name