在使用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)相关推荐

  1. 河南在郑州开启5G网络全城试用

    2019年9月1日,河南移动5G网络郑州全城试用启动仪式在郑州举行.郑州市市长王新伟.河南省通信管理局局长宋灵恩出席启动仪式. 启动现场设立"5G+民族运动会"展区,系统展示了高清 ...

  2. linux下键盘输入有粘滞感,Mac 上开启粘滞键的特性

    以前,用 Windows 系统的时候,我学会了"粘滞键"这个专有名词,其含义,就是当按下一个键盘按键,并且保持不动的时候,系统应有的表现. 比如,一般来说,我们期望系统的行为是连续 ...

  3. WebRTC 教程三:WebRTC特性,调试方法以及相关服务器搭建方法

    WebRTC 教程一:WebRTC信令.架构和 API 入门 WebRTC 教程二:WebRTC API 和 Leak 本文是 WebRTC 的第三篇教程,主要介绍了 WebRTC 的一些特性,调试方 ...

  4. webRTC开启摄像头

    配置htts之后就可以开启webRTC了. <!DOCTYPE html> <html> <head><title>OpenCamera</tit ...

  5. WebRTC系列--视频编码控制之BALANCED(分辨率与帧率平衡模式)

    文章目录 1. 触发流程及流开始 2. 平衡模式流程详细分析 2.1 BalancedDegradationSettings的MinFps方法调用流程 2.2 source_proxy_的Restri ...

  6. 资讯|WebRTC M92 更新

    WebRTC M92目前已在Chrome测试版中发布,包含5个新特性以及超过33个bug修复,功能增强,稳定性与性能等方面的改进. 欢迎关注网易云信公众号,我们将定期翻译WebRTC相关内容,帮助开发 ...

  7. 了不起的Chrome浏览器(6):Chrome 94开始WebGPU试用,Web的图像渲染及机器学能力更强了

    9月21日正式发布的Chrome 94,带来了哪些有意思的新特性呢? 背景 十多年来,Web技术突飞猛进,其中Chrome功不可没,了解Chrome可以帮助我们理解前端行业的发展趋势. 因此,我将以& ...

  8. WebRTC:并非解决音视频应用所有问题的银弹

    WebRTC1.0标准虽然已经定稿,但各个浏览器的实现都还不成熟,处于快速迭代中,网易云信CTO赵加雨针在接受LiveVideoStack采访时,针对实时通信技术演进.WebRTC国内外发展与趋势.以 ...

  9. 关于C3P0容错和自动重连特性的研究

    为什么80%的码农都做不了架构师?>>>    最近常有数据库和网络设备升级和搬迁等事情,而各个应用都是基于数据库连接池做的,大部分都是基于C3P0,数据库或网络状况的变动都会导致客 ...

最新文章

  1. 转:Python 代码调试技巧
  2. win7 64位安装mysql教程视频_64位Win7系统安装Mysql 5.7.22图文教程
  3. boost::hana::nothing用法的测试程序
  4. java阻塞超时_JAVA防线程阻塞(超时控制)
  5. 计算机三级网络操作题,计算机等级考试三级网络技术考试模拟试题
  6. 统计字符串中单词个数的算法优化
  7. 有关 VS Code 的五大谣言,背后的真相到底是如何的?
  8. Angular使用Console.log()打印出来的数据没问题,点击详情后数据变了
  9. springboot全局常量_Spring-Boot配置属性和环境变量的加载顺序
  10. C BackgroundWorker类详细说明
  11. matlab 限幅,限幅是什么意思
  12. 设置子路由_多台路由器如何串联(级联)?
  13. java写法可能存在的 java.lang.OutOfMemoryError: Java heap space 问题
  14. html 链接excel表格,excel表格超链接设置
  15. uni-app ——uni-app的基本使用
  16. 光是无限远服务器的花海,第21次云垂纵横计划服务器互通投票结果公告
  17. 移动互联网创业方向的思考(绕过腾讯和华为等大公司的战场,打造新型的餐饮平台)
  18. 生存还是毁灭?新物种爆发时代,企业请回答
  19. Windows11任务栏消失了怎么办 Windows11任务栏消失了解决方法
  20. 对抗神经网络CycleGAN论文解读

热门文章

  1. 计算机网络路由器关闭电源,无线路由器开关电源适配器功耗降到2W(图)
  2. 已知A点经纬度坐标,方位角角度,距离,求B点经纬度
  3. 【游戏客户端】浅谈装备系统
  4. X250无法开机问题解决
  5. 河师大计算机学院宿舍情况哪,河师大学生宿舍楼工程规划出来啦
  6. 微信小程序推广的技术手段
  7. 中国早餐市场趋势报告、技术动态创新及市场预测
  8. 基于Python的指数基金量化投资 - 指数投资技巧(三)不定期定额
  9. 「经济读物」贫穷的本质:我们为什么摆脱不了贫穷
  10. 高新技术企业申报2023年详解