Android IOS WebRTC 音视频开发总结(七十)-- 移动端音视频技术优化的七个方向

最近直播很火,很多朋友对背后的技术比较感兴趣,所以今天我们整理一篇关于移动端视频优化的文章,这篇文章是我朋友在一个技术大会上分享过的,更多内容请关注我们的微信公众号:rtcblacker

视频直播为什么会这么火?

首先,音视频直播、点播的需求一直大量存在,包括各种行业应用,比如视频门户、娱乐直播、游戏直播、在线教育、远程医疗,远程监控,企业协作,社交应用等等。“以前之所以没有全面爆发,是因为硬件条件不满足,比如网络的带宽有限”,目前网速仍在不断提升,光纤普及到小区,有线网络的上下行带宽已经达到要求,“移动网络4G接入速度也很快,满足了基本的视频直播带宽要求。而且网络资费也比较低,变得大众可接受。”

其次,智能硬件设备大量普及,特别是大屏智能手机、平板,基本是人手一台。同时这些设备的性能也越来越强劲。硬件性能的提升解决了视频编解码的性能瓶颈,可以拿手机、平板作为PC机器使用。

再次,回到商业本质就是直播赚钱快,有兴趣的朋友可以看看我之前写的:三个角度分析美女视频直播这个行业

接下来看看移动端音视频技术优化的几个方向:

第一,选择通用性好,性能良好,复杂度相对较低的编码器,主流的是H.264编码器,开源的主要是x264和openh264,其中openh264是思科开源项目,针对实时视频通话场景做了优化。另外vp8也针对移动端也做了很多优化。

第二,在选定一个编码标准之后,就要看是否采用硬件编码方式,如果采用软件编码,那么会比较耗费cpu资源,表现出来就是设备发烫,耗电快,但是设备兼容性好,几乎可以在任何设备上运行。如果采用硬件编码方式,那么编码性能好,完全可以支持1080p图像全高清的实时编码,而且也省电,但是设备的适配性比较差,特别Android设备的硬件编码模式支持的比较差。ios设备支持的适配性比较好,但是,没有开放更底层的编码接口,难做到按帧获取码流,进行实时直播。另外用硬件编码方式,也比较难做动态码率控制。针对网络直播和点播场景,在编码阶段要尽量做到码率波动的平滑,这个需要优化码率控制算法。

第三,对于Gop的大小也要根据应用场景做适当的调整,如果关键帧之间的间隔小,那么码率会出现频繁的尖峰,发送数据的时候,会造成瞬间的拥塞。
  

第四,可以通过设置buffer来解决码率波动问题,比如在推流端增加一个发送缓冲区,按照固定的码率发送数据,而不是根据每帧数据来发送。同样在播放器也可以设置一个接收buffer,解决网络波动对播放造成的频繁卡顿。但是这个设置过大的buffer会增加延时,不适合直播应用,比较适合点播应用。对于直播场景,要求端到端的延时尽量小,播放端能快速启动,看到画面。对于rtmp直播还要解决累计延时,可以采用在播放器主动清空buffer的方法。
  

第五,不管是直播还是点播服务,都存在一个端到端的数据传输链路问题。在推流端先要连接到接流服务器,这时就要选择合适的节点,一种是根据客户端的DNS域名来选择就近的节点,当DNS配置有误的时候,可能会存在调度不准的问题。另外一种是根据客户端的出口IP来选择节点,这种调度方式会比较准确一些。同样对于播放器端也是采用类似的方式来选择流媒体服务器集群的边缘节点。
  

第六,在整个直播或点播过程中,最好有实时统计数据,包括网络类型,机器信息,实时网络状况,帧率,码率,分别率等。这样可以分析遇到的各种问题,特别是对于直播场景,当网络波动,出现卡顿时,可以为动态调整qos提供依据。
  

第七,对于直播场景,采用qos策略,动态调整编码参数,包括帧率,码率,分辨率,缓冲区。当直播出现卡顿,采用快降慢升的策略,当网络波动比较厉害,这样可以避免编码参数频繁的来回调整,造成恶性循环。当进行编码参数调整时,一般是根据分辨率把码率,帧率分成几个档次,然后在根据一定时间段内的统计数据,在这几组参加集会之间进行来回切换,确保音视频流畅的同时,尽量提高图像质量。

喜欢系列文章,欢迎扫描下方二维码关注我们的公众号:rtcblacker

时间: 2024-11-05 02:39:08

Android IOS WebRTC 音视频开发总结(七十)-- 移动端音视频技术优化的七个方向的相关文章

转:?Android IOS WebRTC 音视频开发总结 (系列文章集合)

随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). callstats是一家做实时通讯性能测阅读全文 posted @ 2016-07-22 08:24

Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 回顾:Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上) 连接网络摄像头 正如上文所提,我们选用一款简单的D-Link DCS-7010L网络摄像头.关键原因在于它支持RTSP协议,因此服务

Android IOS WebRTC 音视频开发总结(六八)-- Google: What's next for WebRTC

本文主要从用户,公司和技术角度分析美女视频直播这个行业,文章最早发表在我们的微信公众号上,支持原创,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.rtc.help Justion和Sarah是google webrtc项目的主要负责人,下面的图片是根据他们分享的内容进行整理的,涉及webrtc进展.优化等方方面面.整理这些资料的过程中我们发现他们对待webrtc还是挺用心的,为webrtc的完善做了很多的工作,谢谢他们! 原始视频时长53分13秒,全英文的,所以我们考虑做

Android IOS WebRTC 音视频开发总结(六)

前段时间在搞IOS的音视频版本,所以将标题改为了Android IOS WebRTC 音视频开发总结, 下面总结一下开发过程中的一些经验: 1. IOS WebRTC音视频编译和下载: 有过android WEBRTC编译下载经验再去弄IOS,你会发现简单多了,再有问题,可以参考:http://www.cnblogs.com/ProbeStar/p/3411510.html  记住有MAC和IOS两个版本,要指定好你想要哪个版本. 2. 正确区分armv7 armv7s i386平台: 编译的时

Android IOS WebRTC 音视频开发总结(五七)-- 网络传输上的一种QoS方案

本文主要介绍一种QoS的解决方案,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help QoS出现的背景: 而当网络发生拥塞的时候,所有的数据流都有可能被丢弃:为满足用户对不同应用不同服务质量的要求,就需要网络能根据用户的要求分配和调度资源,对不同的数据流提供不同的服务质量: 1.对实时性强且重要的数据报文优先处理: 2.对于实时性不强的普通数据报文,提供较低的处理优先级,网络拥塞时甚至丢弃. 为了满足上述需求,QoS出现了,定义如下: QoS

Android IOS WebRTC 音视频开发总结(七九)-- WebRTC选择H.264的四大理由

本文主要介绍WebRTC选择H.264的理由(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 微软近日宣布: Edge的ORTC开始支持H.264/AVC. 这是目前唯一能够在Firefox.Chrome和Edge之间跨浏览器进行视频通话的方法.VP8和VP9至多能让你在Chrome和Firefox之间建立视频通话. 对我

Android IOS WebRTC 音视频开发总结(二九)

Android上的音质一直被大家所困扰和诟病,这里面有很多原因, 下面是最近一位前UC同行发邮件跟我交流的一些记录,供参考,支持原创,文章来自博客园RTC.Blacker,转载请说明出处. 以下文字来自邮件,为便于阅读和理解,略有整理: "Blacker,您好,本人一直从事音视频算法的处理与研究,包括H264视频,语音抑制,回音消除,噪音处理等分支.最近已经转向webrtc了,对webrtc也算是相对熟悉了.不过我在利用webrtc模块来开发时,遇到了一个音频采集的问题.不知道你是否遇到了,你们

Android IOS WebRTC 音视频开发总结(三六)-- easyRTC

本文主要介绍easyRTC,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. 先看看人家官网的介绍,然后再来解释,这样您可能更容易理解: 以下部分内容属个人看法,如有异议,欢迎探讨: 1.EasyRTC其实就是一套封装好的js库,他很方便用户调用webrtc接口,实现浏览器上的音视频功能. 2.以前他的官网上还有total free字样,现在变成price了,所以开源和免费是不能划等号的,如果都免费,咱程序员真变成码农了! 3.因为对手机端来说用浏览器来实现音视频功能并不方便,所

Android IOS WebRTC 音视频开发总结(四九)-- ffmpeg介绍

本文主要介绍ffmpeg,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,个人微信公众号blacker,更多详见www.rtc.help 说明: ps1:如果直接从webrtc开始学习音视频,你可能没听过ffmpeg,也不需要用到,但随着个人能力提升,你会发现这套东西确实很有用. 就我目前接触到的音视频企业,还没有碰到过没用过ffmpeg的(视频厂商都会对用户上传的视频文件做转码,因为他们的客户端在播放的时候需要根据不同客户端的网络带宽适配不同分辨率,或做些自定义开发),由此可