FFplay硬件加速[通俗易懂]

FFplay硬件加速[通俗易懂]本文以ffmpeg-4.4源码为准,a.mp4下载链接:百度网盘,提取码:nl0s。FFplay硬件解码命令如下:ffplay.exe-vcodech264_cuvid-ia.mp4上面命令指定了NVIDIA的硬件解码器,h264_cuvid。在ffplay.c的代码里面硬件解码跟普通解码在逻辑上没有做什么特殊的处理。ffplay.c里面没有像ffmpeg.c那样支持-hwaccel这个选项,所以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硬件加速[通俗易懂]

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

FFplay硬件加速[通俗易懂]

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

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

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


分析完毕

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,或者希望交流音视频技术的,可以加我微信 Loken1。QQ:2338195090。


推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:

Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149047.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月25日 下午8:36
下一篇 2022年6月25日 下午8:46


相关推荐

  • 广域网技术

    广域网技术1.以太网直连不同网段互通arpstatic10.1.11.200e0-fc8e-6612(绑定静态arp表项,不使用arp广播解析mac,直接使用绑定mac封装)iproute-s10

    2022年7月2日
    31
  • Teamo:中国首个多智能体GEO Agent如何颠覆AI营销格局?

    Teamo:中国首个多智能体GEO Agent如何颠覆AI营销格局?

    2026年3月16日
    3
  • Mathjax公式教程

    Mathjax公式教程一般公式分为两种形式 可以理解为一种特殊的代码块 这是行内公式 Gamma z int 0 inftyt z 1 e t dt 这是行内公式 z 0tz 1e tdt z 0 tz 1e tdt Gamma z int 0 inftyt z 1 e t dt 这是块公式 Gamma z

    2026年3月18日
    2
  • java的三种代码注释方式「建议收藏」

    java的三种代码注释方式「建议收藏」1.注释的作用注释是对程序语言的说明,有助于开发者之间的交流,方便理解和维护程序。注释不是编程语句,不会被编译器执行。一些代码量少较少的程序,我们加不加注释对我们的理解和修改代码没有太大影响;如果是淘宝;抖音等那种中大型程序,没有了代码注释,对于日后程序运行维护将是很大困难。我们可以在平时编码过程中养成规范代码注释习惯,也是我们成为优秀程序员的原因2.java中的注释分类Java中的注释分为以下三种:单行注释;多行注释;文档注释1.单行注释java代码中使用双斜杠单行注释//,一般单行注释,注释少

    2022年7月7日
    25
  • Python 发送 email 的三种方式

    Python 发送 email 的三种方式Python发送email的三种方式,分别为使用登录邮件服务器、使用smtp服务、调用sendmail命令来发送三种方法原文请参见米扑博客:Python发送email的三种方式Python发送email比较简单,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现。…

    2022年7月11日
    27
  • Manus 太贵?这个国产AI神器完全免费,还能自动干活!(附保姆级教程)

    Manus 太贵?这个国产AI神器完全免费,还能自动干活!(附保姆级教程)

    2026年3月15日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号