0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于实时音视频SDK对智能硬件的视频适配

科技观察者 来源:财讯网 作者:科技观察者 2020-07-14 17:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

融云实时音视频 SDK 会对市面上的各类智能硬件设备,特别是各种类型、各种版本的手机进行适配,以确保 SDK 的稳定性。但不同于手机的适配,智能硬件的适配有很多不同之处:

1.很多智能硬件的运行内存、CPU 性能等硬件配置普遍比手机性能低;2.部分厂商在智能硬件的摄像头安装方向、个数、类型和手机有较大差异。所以在适配问题上,智能硬件需要单独进行验证讨论,下面就为大家进行详细解析。

融云实时音视频 SDK 摄像头采集数据提供 Texture 和 YUV(NV21) 两种方式,通过设置不同采集方式可以获取到 Texture ID 或 byte 原始视频流数据。Texture ID 用来表示图像照片或者一系列的数据,使用纹理可以使物体展现更多的细节,YUV 则是摄像头采集出的 NV21 格式数据。

YUV 是一种彩色编码格式,可以将其理解为原始视频流数据,主要用在视频、图形处理流水线中(pipeline)。相对于 RGB 颜色空间,设计 YUV 的目的就是为了编码、传输更方便,减少带宽占用和信息出错。

融云实时音视频 SDK 中默认采用 Texture 方式采集,当本端使用该方式采集时,编码器默认将使用 android.media.MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface(0x7F000789) 颜色空间进行编码,如果对端不支持该颜色空间的情况下,可能会导致解码花屏或者解码失败问题,开发者可以在加入房间之前调用 RongRTCConfig.Builder#enableVideoTexture 方法设置是否采用 texture 方式采集。

在遇见智能硬件摄像头安装方向、个数、类型导致的视频采集问题时,可以通过融云实时音视频SDK中 RongRTCConfig.Builder 类的设置方法 setCameraDisplayOrientation 和 setCustomizedCameraParameter,修改摄像机采集的角度和直接设置给 android.hardware.Camera#setParameters(Parameters params) 配置信息。

融云实时音视频 SDK 会通过 android.hardware.Camera.getNumberOfCameras() 方法获取到可用的摄像头 ID,默认会打开前置摄像头,对于需要打开鱼眼镜头或者搭载多个摄像头硬件设备场景中,可以使用

RongRTCCapture.getInstance().startCameraCapture 打开、切换;RongRTCCapture.getInstance().switchCamera 指定 ID 的摄像头。当智能硬件带有 USB 摄像头或 USB 麦克风,并且安卓系统无法识别其外置设备时,调用上文方法将无法打开硬件设备(对端将无法观看本端视频),这种情况,推荐使用融云实时音视频 SDK 发布自定义视频流功能。

二、视频编解码适配

融云音视频 SDK 支持 H.264 编解码器,以高压缩、高质量和支持多种网络的流媒体传输著称,同时也是 MPEG-4 第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准,这个标准通常被称之为H.264/AVC。

使用融云音视频 SDK 时,可以设置编码器颜色空间、编码等级、编码帧率、编码关键帧间隔时间、编码器码率控制模式等配置信息,以解决设备编解码导致的问题。

融云 RTCLib SDK 中摄像头采集数据采用的颜色格式为 NV21,它属于 YUV420 格式,如果智能硬件厂商定制了颜色空间,会导致融云 SDK 内部处理颜色空间逻辑和设备所支持颜色空间不符合,出现编码报错、对端解码失败、对端观看花屏等现象。遇见此问题,开发者可以使用 RongRTCConfig.Builder#setHardWareEncodeColor 方法修改编码颜色空间来解决。

由于视频编码后显示的数据质量偏低,为了调整质量,就需要设置编码等级 level、profile。融云 SDK 默认使用 android.media.MediaCodecInfo.CodecProfileLevel.AVCProfileBaseline ,开发者也可以通过 RongRTCConfig.Builder#enableHardWareEncodeHighProfile 方法将其设置为 android.media.MediaCodecInfo.CodecProfileLevel.AVCProfileHigh,AVCProfileHigh 所对应的编码等级为 android.media.MediaCodecInfo.CodecProfileLevel.AVCLevel3,AVCProfileHigh 相对 AVCProfileBaseline 采用了更高级的压缩特性,这意味着对端在解码时也需要硬件更高的性能,采用 AVCProfileBaseline 是因为其兼容性更高。安卓源码中 7.0 版本之前默认使用 AVCProfileBaseline ,7.0 才修改了该逻辑。

安卓 6.0 源码(android/6.0.1_r16/xref/frameworks/av/media/libstagefright/ACodec.cpp)片段如下:

安卓 7.0 源码(android/7.0.0_r31/xref/frameworks/av/media/libstagefright/ACodec.cpp)代码片段如下:

编码码率控制模式

对于需要传输高质量视频流的场景,除了设置分辨率、帧率、码率提高视频质量外,还可以控制编码码率,融云 SDK 默认使用 CBR ,开发者可以使用音视频 SDK 的 RongRTCConfig.Builder#setHardWareEncodeBitrateMode 方法修改模式设置。该属性安卓 5.0 才开始支持参数设置,以下是对三种模式的介绍:

编码关键帧间隔时间

H.264 标准中有 Instantaneous Decoding Refresh(IDR,即时解码刷新,以下称 I 帧)。H.264 图像以序列为单位进行组织,一个序列是一段图像编码后的数据流,该序列以 I 帧开始,到下一个 I 帧结束。两个 I 帧之间为多个 P 帧(Predictive-frame)或 B 帧(Bi-directional predicted frames),设置的编码关键帧间隔时间就是 IDR 间隔时间。

I 帧:通常是每个 GOP(Group Of Picture) (MPEG 所使用的一种视频压缩技术) 的第一个帧,I 帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。I 帧使用帧内压缩,不使用运动补偿,由于 I 帧不依赖其它帧,所以是随机存取的入点,同时是解码的基准帧。I 帧主要用于解码器的初始化,以及节目的切换和插入,I 帧图像的压缩倍数相对较低,I 帧图像是周期性出现在图像序列中的,出现频率可由编码器选择,I 帧压缩可去掉视频的空间冗余,而 B、P 则是为了去掉时间冗余。

P 帧:向前参考帧(第一帧之后的帧,只存在和前一帧的差异,可以提高压缩效率和图像质量),压缩时只参考前一个帧,属于帧间编码方式(即同时利用了空间和时间上的相关性),P 帧图像中可以包含帧内编码的部分,即 P 帧中的每一个宏块可以是前向预测,也可以是帧内编码;它参考前一个 B 帧或 I 帧来解码出一张完整的图像。

B 帧:双向参考帧,压缩参考前一帧和后一帧,属于帧间压缩技术。压缩比高,如果网络不好,对实时要求高的话会一直等待,实时互动直播一般不使用,值得注意的是,由于 B 帧图像采用了未来帧作为参考,因此 MPEG-2 编码码流中图像帧的传输顺序和显示顺序是不同的。

因为 H.264 采用了多帧预测,所以 I 帧之后的 P帧可能会参考 I 帧之前的帧,这使得在随机访问的时候不能以找到 I 帧作为参考条件,因为即使找到了 I 帧,I 帧之后的数据也有可能解不出数据,而IDR 帧就是一种特殊的 I 帧(这一帧之后的所有参考帧只会参考IDR,而不会参考其他前面的帧)。在解码器中,一旦收到 IDR 帧,就会立即清理参考帧缓冲区,并将 IDR 帧作为被参考帧。

融云 SDK 中关键帧间隔时间默认为 100 秒,开发者可以通过 RongRTCConfig.Builder#setHardWareEncodeKeyFrameInterval 方法修改间隔时间,如果该值设置过小,会加大网络流量和编解码压力;如果过大,在网络有波动情况下,图像质量会下降。以上就是融云在实时音视频 SDK 对智能硬件视频适配方面的一些经验,希望能对开发者朋友们理解智能硬件的适配有所帮助。

fqj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 视频
    +关注

    关注

    6

    文章

    2019

    浏览量

    75262
  • 智能硬件
    +关注

    关注

    205

    文章

    2452

    浏览量

    111754
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    讯维音视频全域智能管控平台重新定义行业标准

    在数字化、智能化、国产化深度融合的时代浪潮下,音视频管控系统早已从单一的信号切换、画面显示,升级为指挥调度、会议协同、应急处置、信息安全的核心中枢。传统音视频方案设备零散、功能割裂、部署复杂、安全薄弱、运维繁琐,早已无法满足现代
    的头像 发表于 04-22 15:58 397次阅读

    C++实战FFmpeg音视频编码实战屏幕录像机视频课程-基于QT5和ffmpeg sdk

    技术已从单纯的“播放与录制”进化为连接物理世界与数字智能的核心纽带。尽管Qt框架已迭代至Qt6,且各类高级封装库层出不穷,但QT5与FFmpeg的组合,依然是音视频开发领域不可撼动的“黄金搭档”。这
    的头像 发表于 04-21 15:27 705次阅读

    MAX4079:完整的音视频后端解决方案

    MAX4079:完整的音视频后端解决方案 一、引言 在当今的电子设备中,音视频处理是一个关键的环节。无论是卫星接收器、有线电视接收器,还是家庭影院系统、DVD 播放器等,都需要高效可靠的音视频后端
    的头像 发表于 04-03 12:50 380次阅读

    车载音视频系统环境试验方法全解析:从高温到EMC测试

    车载音视频系统环境试验是指通过模拟车辆在实际使用过程中可能遇到的各种极端环境条件(如温度、湿度、振动、电磁干扰等),对车载信息娱乐系统(IVI)、显示屏、音响、摄像头等音视频设备进行可靠性、安全性
    的头像 发表于 03-25 16:49 516次阅读
    车载<b class='flag-5'>音视频</b>系统环境试验方法全解析:从高温到EMC测试

    从 “卡脖子” 到 “自主可控”,音视频分布式系统国产化实践之路

    在当前全球音视频芯片市场格局中,国外企业长期占据主导地位,核心技术与核心器件的垄断的局面,曾是国内音视频行业发展的重要制约因素。近年来,随着国际形势的深刻变化,国外对我国芯片行业的技术封锁与市场打压
    的头像 发表于 03-02 11:18 445次阅读
    从 “卡脖子” 到 “自主可控”,<b class='flag-5'>音视频</b>分布式系统国产化实践之路

    工业音视频监控新选择!迈威MIEN2212P工业POE交换机新品重磅来袭

    在工业场景中,音视频监控系统是安全生产、智能管控的核心支柱——无论是风电机舱的实时监测、智慧工厂的工序可视化,还是智能交通的全天候值守,都需要一套能
    的头像 发表于 01-31 14:51 2196次阅读
    工业<b class='flag-5'>音视频</b>监控新选择!迈威MIEN2212P工业POE交换机新品重磅来袭

    洲明科技荣获2025年度音视频行业品牌评选九项大奖

    2025年12月20日,由DAV数字音视工程网与《数字音视工程》杂志联合主办的第17届音视频行业品牌评选结果正式揭晓。
    的头像 发表于 12-28 11:45 911次阅读

    专业音视频板卡核心接口科普 + 产品优劣全解析

    在航空航天、工业测控、多屏监控等专业场景中,音视频板卡的接口类型直接决定信号传输质量与应用适配性,而板卡本身的性能参数则影响系统稳定性与拓展性。本文将结合 8 款专业板卡(CPCI/PXIe 系列
    的头像 发表于 12-11 17:09 1248次阅读

    三款PXIe板卡科普:解锁专业音视频处理的核心力量

    便是其中的“佼佼者”。它以高速FPGA为核心“大脑”,实现了对多路音视频信号的同步捕捉与精准处理,为后续的数据分析和应用提供了坚实基础。 从硬件架构来看,这款板卡采用3U CPCIe总线设计,这种标准化的总线接口不仅让板卡能够轻松适配
    的头像 发表于 12-04 17:04 1135次阅读
    三款PXIe板卡科普:解锁专业<b class='flag-5'>音视频</b>处理的核心力量

    KS-PXIe638 型 8 通道音视频采集板:高清同步采集,专业场景 “性能标杆”

    在航空航天的数据记录、工业测控的实时监测、交通控制的画面留存等专业场景中,多通道、高保真的音视频采集是核心诉求 ——KS-PXIe638 型 8 通道音视频采集板,依托高速 FPGA 架构,以 8
    的头像 发表于 11-26 13:24 681次阅读
    KS-PXIe638 型 8 通道<b class='flag-5'>音视频</b>采集板:高清同步采集,专业场景 “性能标杆”

    音视频编解码封装解封装部件介绍

    是否有探索开源鸿蒙音视频编解码技术的欲望?是否对开源鸿蒙音视频编解码格式支持有诉求?别急——今天这份开源鸿蒙AVCodec Kit介绍文章,就是解答疑惑的指南!参考这份指南,可以使用开源鸿蒙的音视频编解码能力,进行应用开发;也可
    的头像 发表于 10-31 09:15 751次阅读
    <b class='flag-5'>音视频</b>编解码封装解封装部件介绍

    音视频开发全栈解析

    Media Kit 让开发者可以调用系统的音视频能力,涵盖播放、录制、录屏、元数据提取与转码六大核心功能模块,支撑系统应用与第三方应用在视频播放、内容创作、教学录屏、直播互动等典型场景下的音视频处理需求。
    的头像 发表于 09-18 14:42 1163次阅读
    <b class='flag-5'>音视频</b>开发全栈解析

    千视电子受邀亮相2025音视频产业链研讨会,引领全链路音视频IP化新趋势

    主管部门负责人,共同探讨产业前沿技术、市场趋势及合作机会,旨在推动湖南音视频产业链高质量发展。当前,全球音视频产业正经历深刻变革,正在加速迈向智能化、融合化及沉浸式体验的新
    的头像 发表于 08-27 11:33 1655次阅读
    千视电子受邀亮相2025<b class='flag-5'>音视频</b>产业链研讨会,引领全链路<b class='flag-5'>音视频</b>IP化新趋势

    揭秘抖音视频详情API:电商行业的制胜法宝与实时数据获取的奥秘

    随着社交媒体的普及和电商行业的快速发展,抖音等短视频平台已经成为电商企业获取用户、推广产品和了解市场趋势的重要渠道。获取[抖音视频详情API]对于电商行业来说具有重要意义,它可以帮助企业实时获取抖音平台上的
    的头像 发表于 08-14 15:47 926次阅读
    揭秘抖<b class='flag-5'>音视频</b>详情API:电商行业的制胜法宝与<b class='flag-5'>实时</b>数据获取的奥秘

    泰芯半导体推出星闪音视频无线SOC芯片TXW828

    ,以技术创新突破行业边界,为智能终端设备带来革命性音视频处理方案,标志着无线音视频传输正式迈入“超高速、低时延、高可靠”的新纪元。
    的头像 发表于 06-20 15:51 3273次阅读