开启WebRTC的一些“试用特性” (FieldTrials)
在使用Android/iOS端的WebRTC SDK时,我们一定会创建和初始化PeerConnectionFactory。
在Android上,PeerConnectionFactory提供了initialize方法,参数是InitializationOptions :
public static void initialize(PeerConnectionFactory.InitializationOptions options)
它有一个成员变量:
String fieldTrials;
可以通过以下方法来设置:
public PeerConnectionFactory.InitializationOptions.Builder setFieldTrials(String fieldTrials)
例如:
String VIDEO_FLEXFEC_FIELDTRIAL = "WebRTC-FlexFEC-03-Advertised/Enabled/WebRTC-FlexFEC-03/Enabled/";
String VIDEO_VP8_INTEL_HW_ENCODER_FIELDTRIAL = "WebRTC-IntelVP8/Enabled/";
String DISABLE_WEBRTC_AGC_FIELDTRIAL = "WebRTC-Audio-MinimizeResamplingOnMobile/Enabled/";String strFieldTrails = "";
strFieldTrails += VIDEO_FLEXFEC_FIELDTRIAL;
strFieldTrails += VIDEO_VP8_INTEL_HW_ENCODER_FIELDTRIAL;
strFieldTrails += DISABLE_WEBRTC_AGC_FIELDTRIAL;PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions.builder(context).setFieldTrials(strFieldTrails).createInitializationOptions());
通过这个方法,我们可以让Android端的WebRTC启用某些试用特性。Android端的试用特性主要包括以下一些(不一定全):
WebRTC-H264Simulcast
WebRTC-FlexFEC-03
WebRTC-FlexFEC-03-Advertised
WebRTC-IncreasedReceivebuffers
WebRTC-SupportVP9SVC
WebRTC-VP8-Forced-Fallback-Encoder-v2
WebRTC-Video-BalancedDegradation
WebRTC-SimulcastScreenshare
设置的格式一般为: 名称/Enabled(Disabled)/ 。如果有设置值的,格式一般为: 名称/值/
在iOS上的设置方法和Android不同,可以在初始化RTCPeerConnectionFactory的时候,使用 RTCInitFieldTrialDictionary() 来进行设置:
RTCDefaultVideoDecoderFactory *decoderFactory = [[RTCDefaultVideoDecoderFactory alloc] init];
RTCDefaultVideoEncoderFactory *encoderFactory = [[RTCDefaultVideoEncoderFactory alloc] init];_factory = [[RTCPeerConnectionFactory alloc] initWithEncoderFactory:encoderFactory decoderFactory:decoderFactory];NSDictionary *fieldTrials = @{kRTCFieldTrialFlexFec03AdvertisedKey :kRTCFieldTrialEnabledValue,kRTCFieldTrialFlexFec03Key :kRTCFieldTrialEnabledValue,kRTCFieldTrialImprovedBitrateEstimateKey :kRTCFieldTrialEnabledValue,kRTCFieldTrialMinimizeResamplingOnMobileKey:kRTCFieldTrialEnabledValue};
RTCInitFieldTrialDictionary(fieldTrials);
在WebRTC源码中这个文件中:\src\sdk\objc\api\peerconnection\RTCFieldTrials.mm,你可以找到定义的一些针对iOS的试用特性,摘抄如下:
NSString * const kRTCFieldTrialAudioSendSideBweKey = @"WebRTC-Audio-SendSideBwe";
NSString * const kRTCFieldTrialAudioSendSideBweForVideoKey = @"WebRTC-Audio-SendSideBwe-For-Video";
NSString * const kRTCFieldTrialAudioForceNoTWCCKey = @"WebRTC-Audio-ForceNoTWCC";
NSString * const kRTCFieldTrialAudioForceABWENoTWCCKey = @"WebRTC-Audio-ABWENoTWCC";
NSString * const kRTCFieldTrialSendSideBweWithOverheadKey = @"WebRTC-SendSideBwe-WithOverhead";
NSString * const kRTCFieldTrialFlexFec03AdvertisedKey = @"WebRTC-FlexFEC-03-Advertised";
NSString * const kRTCFieldTrialFlexFec03Key = @"WebRTC-FlexFEC-03";
NSString * const kRTCFieldTrialImprovedBitrateEstimateKey = @"WebRTC-ImprovedBitrateEstimate";
NSString * const kRTCFieldTrialMedianSlopeFilterKey = @"WebRTC-BweMedianSlopeFilter";
NSString * const kRTCFieldTrialTrendlineFilterKey = @"WebRTC-BweTrendlineFilter";
NSString * const kRTCFieldTrialH264HighProfileKey = @"WebRTC-H264HighProfile";
NSString * const kRTCFieldTrialMinimizeResamplingOnMobileKey =@"WebRTC-Audio-MinimizeResamplingOnMobile";
NSString * const kRTCFieldTrialEnabledValue = @"Enabled";
可以看到,iOS提供的与Android的并不全都相同,我不确定是因为平台原因还是开发团队差异?
针对上面的所有试用特性,撰写此文时,我还在逐一测试具体的效果,感兴趣的朋友不妨自己亲自试试看。
开启WebRTC的一些“试用特性” (FieldTrials)相关推荐
- 河南在郑州开启5G网络全城试用
2019年9月1日,河南移动5G网络郑州全城试用启动仪式在郑州举行.郑州市市长王新伟.河南省通信管理局局长宋灵恩出席启动仪式. 启动现场设立"5G+民族运动会"展区,系统展示了高清 ...
- linux下键盘输入有粘滞感,Mac 上开启粘滞键的特性
以前,用 Windows 系统的时候,我学会了"粘滞键"这个专有名词,其含义,就是当按下一个键盘按键,并且保持不动的时候,系统应有的表现. 比如,一般来说,我们期望系统的行为是连续 ...
- WebRTC 教程三:WebRTC特性,调试方法以及相关服务器搭建方法
WebRTC 教程一:WebRTC信令.架构和 API 入门 WebRTC 教程二:WebRTC API 和 Leak 本文是 WebRTC 的第三篇教程,主要介绍了 WebRTC 的一些特性,调试方 ...
- webRTC开启摄像头
配置htts之后就可以开启webRTC了. <!DOCTYPE html> <html> <head><title>OpenCamera</tit ...
- WebRTC系列--视频编码控制之BALANCED(分辨率与帧率平衡模式)
文章目录 1. 触发流程及流开始 2. 平衡模式流程详细分析 2.1 BalancedDegradationSettings的MinFps方法调用流程 2.2 source_proxy_的Restri ...
- 资讯|WebRTC M92 更新
WebRTC M92目前已在Chrome测试版中发布,包含5个新特性以及超过33个bug修复,功能增强,稳定性与性能等方面的改进. 欢迎关注网易云信公众号,我们将定期翻译WebRTC相关内容,帮助开发 ...
- 了不起的Chrome浏览器(6):Chrome 94开始WebGPU试用,Web的图像渲染及机器学能力更强了
9月21日正式发布的Chrome 94,带来了哪些有意思的新特性呢? 背景 十多年来,Web技术突飞猛进,其中Chrome功不可没,了解Chrome可以帮助我们理解前端行业的发展趋势. 因此,我将以& ...
- WebRTC:并非解决音视频应用所有问题的银弹
WebRTC1.0标准虽然已经定稿,但各个浏览器的实现都还不成熟,处于快速迭代中,网易云信CTO赵加雨针在接受LiveVideoStack采访时,针对实时通信技术演进.WebRTC国内外发展与趋势.以 ...
- 关于C3P0容错和自动重连特性的研究
为什么80%的码农都做不了架构师?>>> 最近常有数据库和网络设备升级和搬迁等事情,而各个应用都是基于数据库连接池做的,大部分都是基于C3P0,数据库或网络状况的变动都会导致客 ...
最新文章
- 转:Python 代码调试技巧
- win7 64位安装mysql教程视频_64位Win7系统安装Mysql 5.7.22图文教程
- boost::hana::nothing用法的测试程序
- java阻塞超时_JAVA防线程阻塞(超时控制)
- 计算机三级网络操作题,计算机等级考试三级网络技术考试模拟试题
- 统计字符串中单词个数的算法优化
- 有关 VS Code 的五大谣言,背后的真相到底是如何的?
- Angular使用Console.log()打印出来的数据没问题,点击详情后数据变了
- springboot全局常量_Spring-Boot配置属性和环境变量的加载顺序
- C BackgroundWorker类详细说明
- matlab 限幅,限幅是什么意思
- 设置子路由_多台路由器如何串联(级联)?
- java写法可能存在的 java.lang.OutOfMemoryError: Java heap space 问题
- html 链接excel表格,excel表格超链接设置
- uni-app ——uni-app的基本使用
- 光是无限远服务器的花海,第21次云垂纵横计划服务器互通投票结果公告
- 移动互联网创业方向的思考(绕过腾讯和华为等大公司的战场,打造新型的餐饮平台)
- 生存还是毁灭?新物种爆发时代,企业请回答
- Windows11任务栏消失了怎么办 Windows11任务栏消失了解决方法
- 对抗神经网络CycleGAN论文解读