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



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

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

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

ffplay [INPUT] -vf setpts=0.5*PTS

该滤波器也适用于FFmpeg

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

为了保留所有帧,并将帧速率和速度提高4倍,执行:

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
    

相关内容

  • 没有找到相关文章

最新更新