`
fanxiaojun
  • 浏览: 54828 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

音视频开发(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、卫星通讯等)可适当增加流的缓冲时间,至于是采用默认的流畅播放模式,还是关闭流畅播放模式,则需根据实际的应用来决定,通常来说:网络较稳定的场合,可开启平滑播放模式,网络较差的场合,需要关闭平滑播放模式

 

对于本博有任何问题的朋友都可加QQ:992139738

分享到:
评论

相关推荐

    anychat语音,视频,文字通话

    anychat语音 视频 文字通话

    linux系统 视频通话 音视频即时通讯工具 视频开发工具源码

    AnyChat SDK,即AnyChat音视频互动开发平台,是佰锐科技全力打造的核心产品,是一套跨平台的音视频即时通讯解决方案,基于先进的H.264视频编码标准,AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音...

    苹果IOS系统视频通话,音视频通讯开发工具,SDK源码免费下载

    AnyChat SDK,即AnyChat音视频互动开发平台,是佰锐科技全力打造的核心产品,是一套跨平台的音视频即时通讯解决方案,基于先进的H.264视频编码标准,AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音...

    Web视频聊天,音视频即时通讯开发工具,一对一视频聊天开发

    AnyChat SDK,即AnyChat音视频互动开发平台,是佰锐科技全力打造的核心产品,是一套跨平台的音视频即时通讯解决方案,基于先进的H.264视频编码标准,AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音...

    音视频即时通讯demo源码(C#)

    小编最近在开发一款音视频即时通讯软件,在开发过程中,受到了一款demo的启发和帮助,因此将此demo源码分享出来,希望能够帮助到大家。 VS打开这个demo后(AnyChatCSharpDemo.sln)---F5执行报错,会生成文件(\bin\...

    毕设&课设&项目&实训-基于anyChat、vue的简单音视频通话Damo.zip

    包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...

    Android视频聊天开发包

    AnyChat for Android是专为Android平台量身打造的一款即时通讯平台,可以实现双向音视频交互、电视直播、音视频上传、文字交流、文件传输等功能,提供Java接口可二次开发,应用程序界面及业务流程可由应用程序自主...

    AnyChat的视频会议程序实例详解

    AnyChat(全名叫Anychat SDK),也叫音视频互动开发平台;是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准、AAC音频编码标准与P2P技术,整合了佰锐科技在音视频编码、多媒体通讯领域领先的开发技术和...

    音视频对话SDK包源码

    | |----server 服务器用户手册、开发指南 | |----src | | | |----client 客户端SDK开发Demo程序源代码 | | | |----server 服务器SDK开发Demo程序源代码 | |----sdk | | | |----client 客户端SDK引用文件 | | | |----...

    音视频解决方案For IOS

    利用AnyChat音视频解决方案,实现一对一、一对多等音视频通话,简单、快捷、方便、技术全面。

    anychat:开源代码-源码开源

    AnyChat是一套一站式跨平台的音视频解决方案。 支持一对一,一对多的实时音视频交互,P2P技术,文字聊天,文件传输,透明通道,音视频录制。 可以实现PC,手机,Pad等设备之间的语音,视频实时通话,支持Windows,...

    Android之基于RTP/RTSP即时通讯-Android源码

    该代码主要融合了anychat 的技术核心技术,支持rtp/rtsp流媒体协议,实现视频聊天、可视通话、电视直播、即拍即传等功能。

Global site tag (gtag.js) - Google Analytics