音视频开发(Anychat如何改善音视频通话过程中的用户体验)-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

音视频开发(Anychat如何改善音视频通话过程中的用户体验)

简介:
+关注继续查看
 
下载后,首先将其解压到一个临时文件夹中,然后开始后续工作。

 

一、选择播放模式


视频通话过程中出现马赛克或是视频短暂卡住不动等,通常是由于网络不稳定,如丢包、抖动等造成的。

 

AnyChat内核加入了丢包重传、抖动优化等措施,可以避免由于网络偶尔变差而对音视频通话效果的影响,但是当网络带宽不足,或是网络状态持续恶化时,AnyChat内核的优化措施不足以应对恶劣的客观条件时将会出现马赛克现象。

 

AnyChat内核提供了一个API接口,可以让上层根据自身的应用来决定选择何种处理方案:

方案一:打开平滑播放模式,该模式下,出现丢包时,继续播放,保持播放的流畅性,但是界面会出现马赛克,当收到下一个视频关键帧时马赛克消失;

方案二【默认】:关闭平滑播放模式,该模式下,出现丢包时,暂停播放,等下一个视频关键帧到来时再继续播放,界面不会出现马赛克,但是会“卡”一下,“卡”的程度与网络状况相关;

 

处理视频马赛克API接口定义:

///< 平滑播放模式(参数为int型,0 关闭[默认], 1 打开)

#define BRAC_SO_STREAM_SMOOTHPLAYMODE61

 

C++调用示例代码(初始化SDK完成之后调用)

// 关闭平滑播放模式,可防止马赛克出现
DWORD bSmoothPlayMode = 0;
BRAC_SetSDKOption(BRAC_SO_STREAM_SMOOTHPLAYMODE,(const char*)&bSmoothPlayMode, sizeof(DWORD));

// 打开平滑播放模式,可防止视频被卡住,但是会马赛克

DWORD bSmoothPlayMode = 1;

BRAC_SetSDKOption(BRAC_SO_STREAM_SMOOTHPLAYMODE,(const char*)&bSmoothPlayMode, sizeof(DWORD));

 

二、设置音视频流的缓冲时间

 

音视频通话过程中,接收到对方的音视频流数据之后,流数据会进入缓冲区,缓冲到一定的时间才开始播放,这样可以消除网络抖动对通话的影响,缓冲时间越大,应对网络抖动的能力越强,但延迟也越大,不同的应用,不同的网络环境,可设置不同的缓冲时间。

 

AnyChat内核在通话的过程中,会自动评估网络状态,根据不同的网络状态来动态调整缓冲时间:当网络状态好时,会尽量减少缓冲时间,保障通话过程的实时性;当网络状态差时,会适当增大缓冲时间,保持通话过程的流畅性。

 

设置流缓冲时间API接口定义:

///< 最大流缓冲时间(参数为int型,单位:毫秒,取值范围:500 ~ 5000,默认:800)

#define BRAC_SO_STREAM_MAXBUFFERTIME60

 

C++调用示例代码(初始化SDK完成之后调用)

// 设置音视频流最大缓冲时间

DWORD dwMaxBufferTime = 2000;

BRAC_SetSDKOption(BRAC_SO_STREAM_MAXBUFFERTIME,(const char*)&dwMaxBufferTime, sizeof(DWORD));

 

设置的最大流缓冲时间为允许内核调节缓冲时间的上限,只有当网络条件非常恶劣时才会达到设置的缓冲时间,在网络条件允许的情况下,内核会尽最大的能力保障交互的实时性,减少缓冲时间。简而言之,增大缓冲时间,应对网络抖动、丢包的能力增强,但是在网络变差时,会带来一些延迟。

 

经验总结:普通的应用保持AnyChat内核的默认设置即可,当应用环境网络不稳定时,且对实时性要求不高的场合(如3G、卫星通讯等)可适当增加流的缓冲时间,至于是采用默认的流畅播放模式,还是关闭流畅播放模式,则需根据实际的应用来决定,通常来说:网络较稳定的场合,可开启平滑播放模式,网络较差的场合,需要关闭平滑播放模式





本文转自 fanxiaojun 51CTO博客,原文链接:http://blog.51cto.com/2343338/1009580,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
以“用户播放行为与体验”为核心的视频服务质量优化
如何应对视频直播中复杂多样的用户网络环境,提高视频服务质量是各直播服务平台面临的一大难题。Twitch提出了一种无监督学习的方法,全面评估用户观看时的行为与体验,预测用户的网络状况,通过码率自适应的方法实现快速的迭代升级从而提高服务质量。本文来自Twitch Principal Research Engineer沈悦时在LiveVideoStackCon 2018中的分享,并由LiveVideoStack整理而成。
118 0
ffmpeg音视频开发: 使用ffprobe获取媒体信息
ffmpeg音视频开发: 使用ffprobe获取媒体信息
11 0
Android官方开发文档Training系列课程中文版:连接无线设备之通过P2P搜索网络服务
原文地址:http://android.xsoftlab.net/training/connect-devices-wirelessly/nsd-wifi-direct.html 本阶段的第一节课 Using Network Service Discovery 展示了如何搜索本地网络服务。
867 0
CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点
深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算、网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了《海量短视频极速分发》的主题分享,带领我们从视频内容采集、上传、存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点。
5112 0
【整理】波罗密多老师python视频
作者:david_zhang@sh 【转载时请以超链接形式标明文章】链接:http://www.cnblogs.com/david-zhang-index/archive/2012/08/07/2627213.
634 0
ThinkPHP 3.2 开发过程
原文: ThinkPHP 3.2 开发过程  设置所有项目的公共配置Application\Common\Conf\config.php,SAE模式下配置文件为config_sae.
751 0
【大数据新手上路】“零基础”系列课程--如何通过大数据开发套件Data IDE玩转大数据
老板每天都要出这些业务数据(销售总额、总交易量、总点击次数、总加入购物车次数、总加入收藏夹次数...),我得想个一劳永逸的方法了…
7739 0
13694
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载