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