2025年FFplay硬件加速[通俗易懂]

FFplay硬件加速[通俗易懂]本文 以 ffmpeg 4 4 源码为准 a mp4 下载链接 百度网盘 提取码 nl0s FFplay 硬件解码命令如下 ffplay exe vcodec h264 cuvid i a mp4 上面命令指定了 NVIDIA 的 硬件解码器 h264 cuvid 在 ffplay c 的代码里面 硬件解码 跟 普通解码在逻辑上没有做什么特殊的处理 ffplay c

本文 以 ffmpeg-4.4 源码为准,a.mp4下载链接:百度网盘,提取码:nl0s 。

----

FFplay 硬件解码命令如下:

ffplay.exe -vcodec h264_cuvid -i a.mp4

上面命令指定了 NVIDIA 的 硬件解码器,h264_cuvid。 在 ffplay.c 的代码里面 硬件解码 跟 普通解码在逻辑上没有做什么特殊的处理。

ffplay.c 里面没有像 ffmpeg.c 那样支持 -hwaccel 这个选项,所以 ffplay.c 的硬件解码流程 跟 普通解码 流程没有区别,至少在 API 函数使用上是这样。

断点查看可以看到,就是 传递一个 解码器名称 进行 avcodec_open2() 函数里面。

使用 ffplay 进行硬件解码的时候,GPU 的性能监控图如下,可以看到,占用率非常低。

ffplay 跟 ffmpeg 解码的时候不一样,这是因为 ffplay 只需要按照帧率去解码即可,ffplay 是播放多少,解码多少。而 ffmpeg 是解码得越快越好。所以 ffmpeg 硬件解码 占用的 gpu 资源会很高,ffmpeg 可以通过 -re 参数控制解码速度。

还有一个地方,ffplay 不支持 -hwaccel 这个选项。

-hwaccel 这个选项 应该是 控制 GPU 进行并行计算的,因为在显卡里,并行计算跟编解码器是两个模块(这个我也不太清楚,知道的朋友可以在文章评论补充一下)

----

分析完毕

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。

编程小号
上一篇 2025-02-28 15:27
下一篇 2025-03-08 11:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/112036.html