WebRTC系列实战-自定义RTP中的extension Webrt中本身自定义了很多的rtp extension。例如absltime,audioLevel,videoRotaion,等,但是有时候我们希望额外发送一些我们自定义 的信息,比如:说话人的信息等,这里就需要自定义我们自己的rtp extension了,本文将详细介绍如何通过修改源码的方式实现发送自定义的信息;
mediasoupWork中引入本地so库 本篇是一个bug的记录,原自一次需求对mediasoup worker层的修改需要引入一个自己的库,但是只有so库,找不到源码无法使用静态库的方式通过修改.gyp连接到worker中;对于.gyp中so库的引入网上很难找到对应的文档,所以按照ld连接库的方式添加;
flutter笔记-hello dart 在AS中启动iOS模拟器要是启动设备,检查下默认xcode,因为我有多个xocde默认没有选择不是系统的所以云信iOS模拟器失败;AS中默认启动的是application下的xcode模拟器;这两个的区别是,const 必须赋值常量值,是要在编译期间确定的值;final可以是运行期间确定的值;打开AS 选择打开已经存在的项目,选择文件,然后就可以在AS种编译了;中配置的内容下载对应的包,并放置在系统缓存中(包括其依赖的所有包);,也就是判断一个对象是否存在,需要明确的bool类型;
WebRTC系列-H264视频帧组包(视频花屏问题) WebRTC在弱网环境下传输较大的视频数据,比如:屏幕共享数据;会偶发的出现黑屏的问题;也就是说当视频的码率比较大且视频的分辨率比较高的时候,有一定概率出现黑屏的问题;本文基于M76分支的代码分析其WebRTC组包的两个关键函数;WebRTC的组帧逻辑主要在类中(在modules/video_coding/packet_buffer.cc中),其中的和是组包的两个关键函数;这篇文章会分析其中的主要逻辑及可能导致问题的位置;
WebRTC系列-自定义媒体数据加密 前面的文章都有提过WebRTC使用的加密方式是SRTP这个库提供的,这个三方库这里就不做介绍,主要是对rtp包进行加密;自然的其调用也是WebRTC的rtp相关模块;同时在WebRTC里也提供一个自定义加密的接口,本文将围绕这个接口做介绍及分析;
WebRTC编译记录 从命令行错误看,出错是因为,好吧,那就试着重新编译安装:安装这个很简单照着执行命令就行:安装完后,执行命令,输出如下图:说明安装成功了;;但是。。。问题还是没解决,接着在https://groups.google.com/g/discuss-webrtc/c/xXkmEzzpG_8/m/d1jiHe9HKwAJ谷歌论坛上找到类似问题:接着尝试:;在执行了brew unlink libtool后,继续尝试编译,,顺利编译完成;不行其实,然后看执行命令中有个错误:也就是说默认使用libtool不对
WebRTC系列--track的set_enabled详解 最近项目中发现远端的视频调用track的set_enabled设置成false后,视频画面是黑屏;通过断点分析,发现gl部分还是有视频帧,并且在渲染;这篇文章就是set_enabled这个接口开始,详细分析其中调用流程;本文会详细的分析这个接口的调用流程;
WebRTC系列--FEC介绍 RedFEC (Reduced-Complexity Forward Error Correction) 是一种前向纠错协议,定义在RFC2189中,它旨在通过向数据流中添加冗余信息来提高数据传输的可靠性;RedFEC通过在发送端对数据进行冗余编码,并在接收端使用冗余数据进行纠错来抵抗数据包丢失或错误。在规范中即定义了打包的格式,及如何通过RedFEC生成冗余包来对原始数据进行保护;异或的规则:两个值不相等则为 1,相等则为 0;当两个输入位相同时,异或结果为0。
WebRTC系列--opus带内FEC和red效果 要使用RED,更改编解码器的顺序,使它在Opus编解码器之前。当你在相对较小的50kbps的Opus流旁边发送几百千比特的视频时,基于拥塞的Opus音频的FEC策略没有太多意义。在重度数据包丢失的情况下,LBRR使用的比特率最高可达10kbps(或数据速率的三分之二)。SILK的LBRR,也就是低比特率冗余,也包含在Opus中(记住Opus是一个混合编解码器,它在比特率谱的低端使用SILK)。然而,Opus中的SILK与Skype早年开源的原始SILK相当不同,用于前向错误纠正模式的LBRR部分也是如此。
WebRTC系列--opus带内FEC Opus 编码器的 OPUS_SET_COMPLEXITY 参数控制编码器的复杂性,这个参数的范围在 0 到 10 之间,其中 0 是最低复杂性,10 是最高复杂性。调整 OPUS_SET_COMPLEXITY 参数会影响编码器的以下行为:计算复杂性:将 OPUS_SET_COMPLEXITY 参数调高会增加编码过程的计算复杂性。这意味着,更高的复杂性可能会导致更高的 CPU 利用率和更大的延迟。
WebRTC系列-适配GPUImage及其他视频处理改造 GPUImage使用OpenGL提供了很多的图像处理算法,包括最常用的美颜处理、水印等功能,这些基本的功能如何添加到WebRTC中,本文以美颜为例子,叙述主要的改造流程;同时也适用于OpenGL等图像处理库;注:以下代码是使用WebRTCm76中的iOS端做分析,其他端处理思路类似。