• FFmpeg 硬件加速介绍


    硬件加速简介

    使用专用硬件(通常集成到GPU)对视频处理进行加速,比如解码、编码或filter等操作[1]。

    优点:

    • 比软件处理速度快。
    • 减少CPU的负荷,更省电。
    • 避免数据拷贝。许多硬件解码器能够生成输出到硬件设备(比如显存)的surface,这意味渲染输出之前不需要额外的数据拷贝。在某些情况下,它还可以支持硬件设备的surface输入与编码器一起使用,以避免在转码时候的数据拷贝。

    缺点:

    • 硬件编码器生成的输出质量通常比好的软件编码器低得多[1]。
    • 硬件加速方案依赖于各硬件和平台的支持,没有统一的方案。
    • 对于特定处理(比如编解码)硬件加速的支持和更新迭代速度慢。

    关于硬件加速的详细介绍参见[2][3]。

    FFmpeg 硬件加速各环境支持情况

    硬件加速API在各系统和硬解环境的支持情况如下[1]。

    FFmpeg实现的API的情况如下[1]。

    FFmpeg命令行工具使用硬件加速

    • -hwaccel选项启用硬件解码器。
      • 软件解码器会正常启动,如果它检测到一个硬件可解码的流,将尝试将所有重要的处理交给硬件。如果流在硬件中不可解码,那么将自动使用软件解码。
    • -hwaccel_device选项指定特定的硬件设备(比如有多个显卡可用)。
    • -codec:v选项设置特定的编解码器,适用于外部包装的编解码器。
      • 通常将它们命名为codec_api(例如:h264_cuvid),要求事先知道编解码器的名称。
      • 如果不支持不会回退到软件编解码。
    • 硬件filter可以像其他filter一样在filtergraph中使用。
      • 存在硬件filter与软件filter支持的格式不同的情况,需要使用hwuploadhwdownload filter在硬件surface和内存之间拷贝数据。

    【扫码进君 羊,免费分享】资料包括《Andoird音视频开发必备手册+音视频学习视频+学习文档资料包+大厂面试真题+2022最新学习路线图》等等 

    示例:
    1. 使用NVENC进行h264编码:

    ffmpeg -s 1280*720 -i input_yuv -c:v h264_nvenc -pixel_format yuv420p -preset default output.mp4

     2. NVEDC进行h264解码

    ffmpeg -hwaccel nvdec -i input.mp4 output_yuv

     

  • 相关阅读:
    【《On Java 8》学习之路——封装】知识点整理分享
    程序员对代码注释可以说是又爱又恨又双标
    maven
    快应用参数传递
    [JavaScript 刷题] 树 - 从前序与中序遍历序列构造二叉树, leetcode 105
    ibstdc++.so.6: version `GLIBCXX_3.4.30‘ not found (
    Win11分磁盘怎么分?Win11系统怎么分磁盘?
    虚拟运营商与实体运营商的apn匹配逻辑
    USART使用
    linux内核网络收包过程(一)
  • 原文地址:https://blog.csdn.net/yinshipin007/article/details/125900033