如何改善音视频通话过程中的用户体验?

本文介绍了如何通过选择播放模式和平稳播放模式来防止音视频通话中出现马赛克现象,并通过设置音视频流的缓冲时间来消除网络抖动对通话的影响。对于网络环境不稳定的应用场景,适当增加缓冲时间可提高通话流畅性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何改善音视频通话过程中的用户体验?


一、选择播放模式


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

 

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

 

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

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

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

 

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

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

#define BRAC_SO_STREAM_SMOOTHPLAYMODE 61

 

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内核在通话的过程中,会自动评估网络状态,根据不同的网络状态来动态调整缓冲时间:当网络状态好时,会尽量减少缓冲时间,保障通话过程的实时性;当网络状态差时,会适当增大缓冲时间,保持通话过程的流畅性(参考:241. AnyChat音视频延迟有多大?)。

 

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

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

#define BRAC_SO_STREAM_MAXBUFFERTIME 60

 

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

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

DWORD dwMaxBufferTime = 2000;

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

 

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

 

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

 

注:上述两个API接口为AnyChat Platform Core SDK V4.5版本新增。


可以用此函数库开发一个即时通讯的客户端,可以支持语音,视频。所有的功能都已经封装好了,是需要调用即可。 上层可以使用java,C#等高层语音开发,也可以使用C++。 1 概述 5 2 Xmrtc模块说明 5 2.1 Xmrtc主要功能: 5 2.2 调用规范 6 2.3 基础 6 2.4 运行环境 7 2.5 呼叫过程说明 7 2.6 电话会议说明 8 2.7 SIP消息跟踪 8 3 接口调用说明 8 3.1 调用规范 9 3.2 定义和应用资源 9 3.3 回调函数(CALLBACK)的安全性 9 3.4 避免指针被回收 10 4 xmrtc接口说明 11 4.1 获取版本号 11 4.2 设置日志过滤级别 11 4.3 写日志 12 4.4 系统初始化 12 4.5 系统终止请求 13 4.6 设置登录用户 13 4.7 登录 14 4.8 注销 14 4.9 设置回调函数 15 4.9.1 设置音频音量CALLBACK 15 4.9.2 设置系统退出CALLBACK 16 4.9.3 设置电话呼入CALLBACK 17 4.9.4 设置电话回铃CALLBACK 18 4.9.5 设置呼叫保持CALLBACK 18 4.9.6 设置呼叫连接成功CALLBACK 19 4.9.7 设置呼叫结束CALLBACK 20 4.9.8 设置媒体变化CALLBACK 20 4.9.9 设置注册状态CALLBACK 21 4.9.10 设置状态变化CALLBACK 22 4.9.11 设置响度CALLBACK 23 4.10 呼叫相关命令 24 4.10.1 发起呼叫 24 4.10.2 接受一个呼叫 24 4.10.3 结束呼叫 26 4.10.4 呼叫保持 26 4.10.5 发送DTMF音 27 4.11 设置音频音量 28 4.12 设置音频静音 28 4.13 设置用户登录信息对话框 29 4.14 设置调节向导 30 4.15 获取当前音量 30 5 状态同步接口 31 5.1 CDR模块初始化 31 5.2 强拆远程会话 35 5.3 强插远程会话 35 5.4 转移当前会话 36 5.5 Agent名称设置 37 5.6 获取视频接口 37 5.7 播放铃声 39 5.8 用户置忙置闲 40 5.9 获取用户状态 41
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值