WebRTC框架中的硬件加速

典型缓冲流量

应用程序和单元测试设置

重要方法调用

WebRTC软件包

局限性

WebRTC是一个免费的开源项目,可为浏览器和移动应用程序提供实时通信功能。

WebRTC的主要功能是能够发送和接收交互式高清视频。快速处理此类视频需要硬件加速的视频编码。

当前,开源WebRTC项目框架支持各种软件编码器类型:VP8,VP9和H264。NVIDIA将硬件加速的H.264编码集成到WebRTC编码框架中。本文档使用名称NvEncoder表示此功能。

典型缓冲液流量

下图显示了硬件加速的WebRTC编码框架中的典型缓冲区流。

发送YUV帧,该帧将YUV帧转换为I420格式并在编码器的输出平面上排队。使用专有的NVIDIA低级编码库将输出平面缓冲区发送到NvEncoder。NvEncoder在其捕获平面上返回已填充的已编码缓冲区。

根据应用程序的要求,发送编码后的缓冲区以进行进一步处理。

应用程序和单元测试设置

WebRTC_r32.2.0_aarch64.tbz2程序包中的readme文件包含有关应用程序使用和安装的其它信息。

设置和测试NvEncoder示例应用程序

1。Video Loopback应用程序:要运行该应用程序,请输入以下命令:

$ ./video_loopback-编解码器H264-宽度1280-高度720 --capture_device_index 0

其中:

•--codec指定编码格式。硬件编码当前仅支持H.264。

•--width指定框架宽度。

•--height指定框架高度。

•--capture_device_index指定/ dev / video <x>的索引。

如果WebRTC框架正常工作,应用程序将显示具有所需宽度和高度的摄像机视频流。如果WebRTC检测到帧丢失,则按比例缩放。

2. 对等连接客户端/服务器应用程序

相机设置:将USB相机连接到Jetson设备。

服务器设置:要在Jetson平台上启动peerconnection_client应用程序,请输入以下命令:

$ ./peerconnection_server

此命令使用默认配置在端口8888上启动服务器。

客户端设置:要在Jetson平台上启动peerconnection_client应用程序的两个实例,请输入以下命令:

$ ./peerconnection_client --autoconnect --server < Server.IP >

$ ./peerconnection_client --server <Server.IP> --autoconnect --autocall

每个命令都会启动一个实例,该实例会自动将客户端连接到服务器。第二个命令使用-autocall选项来调用服务器上第一个可用的其它客户端,而无需用户干预。

3. ħ为NvEncoder 0.264单元测试:输入命令:

$ ./modules_tests --gtest_filter =“ TestNvH264Impl。*” --gtest_repeat = <迭代次数>

如果Jetson设备上的软件显示pulseaudio错误:

输入此命令安装pulseaudio:

$ sudo apt安装pulseaudio

输入以下命令以启动pulseaudio守护程序:

$ pulseaudio –开始

重要方法调用

NvEncoder基于NvVideoEncoderFactory类,该类在头文件中定义:

webrtc_headers / modules / video_coding / codecs / nvidia / NvVideoEncoderFactory.h

该头文件位于软件包WebRTC_r32.2.0_aarch64.tbz2中。

本节总结了对NvEncoder的重要调用。

创建支持硬件的视频编码器

•执行方法调用:

std :: unique_ptr <VideoEncoder> CreateVideoEncoder(const webrtc :: SdpVideoFormat&format)

参数为:

format:指定所需的编码格式。当前仅支持SdpVideoFormat(H.264)。

该方法创建并返回指定格式的NvVideoEncoder对象。

查询视频编码器

•执行函数调用:

CodecInfo QueryVideoEncoder(const SdpVideoFormat&format)

参数为:

format:指定所需的编码格式。

该函数查询视频编码器并返回其编解码器信息。

获取受支持的视频格式

•执行方法调用:

std :: vector <SdpVideoFormat> GetSupportedFormats()

该方法返回编码器支持的所有格式的SdpVideoFormat对象的向量。

WebRTC软件包

文件WebRTC_r32.2.0_aarch64.tbz2包含以下文件:

•libwebrtc.a:WebRTC库文件

•头文件:所有WebRTC头文件及其各自的路径名

•video_loopback:用于测试基本视频功能的应用程序

•peerconnection_client:连接到服务器和其它客户端的客户端应用程序

•peerconnection_server:一个创建服务器和客户端接口的应用程序

•module_test:编码器单元测试应用程序

•README:适用于应用程序和NvVideoEncoderFactory的README文件。

局限性

当前,硬件加速仅支持H.264编码器。

该video_loopback仅适用于H.264编码器。

USB摄像头以YUY2颜色格式输出缓冲区,但是NVEncoder希望输入为I420或NV12格式,需要进行颜色转换。当前,这是使用CPU上的WebRTC框架完成的。

WebRTC框架中的硬件加速的更多相关文章

  1. GPU硬件加速相关

    从android3.0开始,2D渲染开始支持硬件加速,即在view的Canvas上的绘图操作可以用GPU来加速. 硬件加速会使app消耗更多的内存. 如果配置文件中,Target API level  ...

  2. 硬件加速 Hardware Accelerated 绘制

    官方文档中对硬件加速的描述 原文地址:http://developer.android.com/guide/topics/graphics/hardware-accel.html Beginning ...

  3. Qt 框架的图形性能高(OpenGL上的系统效率高),网络性能低,开发效率高,Quick是可以走硬件加速——Qt中分为好几套图形系统,差不多代表了2D描画的发展史。最经典的软描画系统

    -----图形性能部分-----Qt的widgets部分,运行时的图像渲染性能是一般的,因为大部分的界面内容都是Qt自绘,没有走硬件加速,也就是说很多图形内容都是CPU算出来的.但是widgets底层 ...

  4. 【Chromium中文文档】Chrom{e,ium}{,OS}中的硬件视频加速

    Chrom{e,ium}{,OS}中的硬件视频加速 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_ ...

  5. javascript 手势(swipeLeft,swipeRight)滑动中使用css3动画卡顿,开启硬件加速

    今天,在做一个移动端项目,遇到了css3动画卡顿的现象. 例图: 在手势滑动中(swipeLeft,swipeRight)遇到了动画卡顿的现象,最后使用了css3动画-webkit-transform ...

  6. 图形性能(widgets的渲染性能太低,所以推出了QML,走硬件加速)和网络性能(对UPD性能有实测数据支持)

    作者:JasonWong链接:http://www.zhihu.com/question/37444226/answer/72007923来源:知乎著作权归作者所有,转载请联系作者获得授权. ---- ...

  7. 几个平台环境里视频编解码和图像scale的硬件加速的方法

    记录一下遇到几个平台里的视频编解码和图像scale的硬件加速的方法 1,intel平台当包含GEN系列的集成GPU时,可用libva实现视频codec.颜色空间转换和图像scale的硬件加速,具体可使 ...

  8. FortiGate 硬件加速

    FortiGate 硬件加速 来源 https://wenku.baidu.com/view/07749195a1c7aa00b52acb63.html 硬件加速 来源 https://blog.cs ...

  9. Android 4.0的图形硬件加速及绘制技巧

    转:http://zuiniuwang.blog.51cto.com/3709988/721798 从Android 3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速.使用GP ...

随机推荐

  1. 【Feign/Ribbon】记录一次生产上的SpringCloudFeign的重试问题

    在上周在的微供有数项目中(数据产品),需要对接企业微信中第三方应用,在使用Feign的去调用微服务的用户模块用微信的code获取access_token以及用户工厂信息时出现Feign重试超时报错的情 ...

  2. POJ1679判断最小生成树的唯一性

    题意:      判断最小树是否唯一. 思路:      我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生 ...

  3. NTDDK 从两个最简单的驱动谈起

    第 1 章 从两个最简单的驱动谈起 Windows 驱动程序的编写,往往需要开发人员对 Windows 内核有深入了解和大量的内 核调试技巧,稍有不慎,就会造成系统的崩溃.因此,初次涉及 Window ...

  4. NSIS制作安装包笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包

    前言   做产品时,定制的自定义安装界面常有的,使用NSIS + Qt可以完美的定制基于QT的安装界面,先从纯NSIS开始,制作常规的安装包.   应用程序的发布方式   应用程序发布的时候,具备以下 ...

  5. 一个或多个筛选器或者Listeners启动失败 的问题探索以及解决方案

    2020年10月9日更新 经过本人对SSM框架理解的加深和对IDEA工具使用的熟悉,现提出一种新的解决办法,以前的解决办法可能存在问题 1. 问题描述: 使用IDEA作为开发工具,使用Maven作为项 ...

  6. php 获取某数组中出现次数最多的值(重复最多的值)与出现的次数

    1.$arr = array(7,7,8,9,10,10,10); $arr = array_count_values($arr);   // 统计数组中所有值出现的次数 arsort($arr);  ...

  7. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(6.B)- FlexSPI NOR连接方式大全(RT500)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT500的FlexSPI NOR启动的连接方式. 这个i.MXRT FlexSPI NOR启动连接方式系列文章,痞子衡 ...

  8. Hive企业级性能优化

    Hive作为大数据平台举足轻重的框架,以其稳定性和简单易用性也成为当前构建企业级数据仓库时使用最多的框架之一. 但是如果我们只局限于会使用Hive,而不考虑性能问题,就难搭建出一个完美的数仓,所以Hi ...

  9. OO随笔之和蔼的第四单元——UML系列

    本单元的OO作业相比以前的,实在可以以和蔼来形容.但是和蔼并不意味着什么都不做,这单元的两次作业,特点在于每种查询难度不大,但是有很多需要商榷的细节点和查询种类比较多.由于UML图和java8之间,存 ...

  10. 寻找CPU使用率高的进程方法

    寻找CPU使用率高的进程方法 发布时间:  2017-07-13 浏览次数:  1362 下载次数:  0 问题描述 节点报CPU使用率高,甚至出现"ALM-12016 CPU使用率超过阈值 ...