ffmpeg 如何跳帧或者丢帧解码,以降低cpu和内存占用

在FFmpeg中,可以使用以下命令跳帧或丢帧解码以降低CPU和内存占用:

有些逻辑是解码前丢弃,有些是解码后丢弃,解码后丢弃的基本不影响硬解的解码路数,这个需要注意

  1. -skip_frame命令:该命令可用于跳过特定类型的帧,例如跳过B帧或P帧,以减少解码的数量。例如,以下命令将跳过B帧进行解码:
ffmpeg -skip_frame b -i input.mp4 output.mp4
  1. -skiploopfilter命令:该命令用于跳过帧循环滤波器,以降低CPU和内存占用。例如,以下命令将跳过循环滤波器进行解码:
ffmpeg -skip_loop_filter all -i input.mp4 output.mp4
  1. -discard命令:该命令可用于丢弃特定类型的帧,例如跳过B帧或P帧,以减少解码的数量。例如,以下命令将丢弃B帧进行解码:
ffmpeg -discard b -i input.mp4 output.mp4
  1. 跳偶数帧或奇数帧

使用 FFmpeg 的 -skip_frame 参数可以实现跳偶数帧或奇数帧的解码策略。具体调用命令如下:

跳偶数帧:

ffmpeg -i input.mp4 -vcodec copy -an -skip_frame mod2 -f rawvideo output.yuv

跳奇数帧:

ffmpeg -i input.mp4 -vcodec copy -an -skip_frame mod2+1 -f rawvideo output.yuv

其中,选项 -skip_frame mod2 表示跳过所有偶数帧,即只输出视频帧index为奇数的帧;选项 -skip_frame mod2+1 表示跳过所有奇数帧,即只输出视频帧index为偶数的帧。

  1. 按时间间隔跳帧或丢帧

使用 FFmpeg 的 -r 参数和 -ss 参数可以实现按时间间隔跳帧或丢帧的解码策略。具体调用命令如下:

按每秒 5 帧的间隔输出帧:

ffmpeg -i input.mp4 -vcodec copy -an -r 5 -f rawvideo output.yuv

按 2 秒的间隔输出帧:

ffmpeg -i input.mp4 -vcodec copy -an -vf fps=0.5 -f rawvideo output.yuv

其中,选项 -r 5 表示按每秒 5 帧的间隔输出帧;选项 -ss 2 表示跳过前 2 秒的视频帧;选项 -vf fps=0.5 表示按 2 秒的间隔输出帧。

需要注意的是,跳帧或丢帧解码可能会对视频质量产生一定的影响,因此需要根据实际情况进行权衡和测试。此外,这些命令也需要根据不同的视频格式和编解码器进行调整,以达到最佳的性能和效果。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值