- 博客(102)
- 资源 (15)
- 收藏
- 关注

原创 WebRTC带宽评估 -- Transport-wide Congestion Control
S:1 bit, 0表示后面symbol list中用1 bit表示1个RTP包的状态(0没收到,1收到),所以1个chunk最多能描述14个RTP包的到达状态;1表示后面symbol list中用2 bit表示1个RTP包的状态(00没收到,01收到小delta,10收到大delta),所以1个chunk最多能描述7个RTP包的到达状态。T:1 bit,表示chunk type,此时为Status Vector Chunk,值为1。packet chunk:描述RTP包的到达状态(详见下文描述)
2023-07-20 18:17:09
486

原创 Mac/Windows平台下载编译Chromium
/out/Default/Chromium.app/Contents/MacOS/Chromium 这样一个可执行文件,直接命令行执行即可,就会打开你自己本地编译的Chromium了。>sudo ./Install\ Certificates.Command #进入目录后,可以ls一下,看一下都有哪些,找那个对的。设置xcode路径:sudo xcode-select -s /Users/yumlu/Downloads/Xcode.app。现在会在out目录下生成编译Chrome所需的一系列参数和配置。
2023-07-18 22:06:01
2354

原创 WebRTC源码分析 - receiver and decoder
的 ReceiveStatisticsProxy::OnCompleteFrame。otifyError就会进入error状态,一旦进入error状态,直接一直返回。H264DecoderImpl::Decode (FFmpeg解码)deocde失败:Failed to decode frame。OnInsertedPacket --- 组帧的结果到这里。解密失败:Failed to unprotect。传入到webrtc fallback模块)这中间少了frame。
2023-07-16 16:07:28
1450

原创 视频会议的几种通信架构
在带宽不好的情况下,可以只传输底层,即核心层,在带宽充足的情况下,可以将三层全部传输过去。SFU 根据接收端的情况,发现 PC2 网络状况不错,于是将 0、1、2 三层都发给 PC2;2.MCU:星形结构,Server接收每个共享端的音视频流,经过解码、与其他解码后的音视频进行混流、重新编码,之后再将混好的音视频流发送给会议中的所有人。1. Mesh:网状结构,会议中client两两相连,不需要Server, 缺点client上行带宽要求多,加会人数越多,client系统资源要求越高。
2023-07-16 14:38:32
1286

原创 RTP及RTP Header Extension
padding (P):1 bit,如果设定 padding,在报文的末端就会包含一个或者多个 padding 字节,这不属于 payload。CSRC: 贡献信源,混合器接收到一个或者多个同步信源的RTP报文,经过混合器处理产生一个新的组合RTP报文,并把混合器作为组合报文的SSRC,而将原来的所有的SSRC都作为CSRC,发送给接收者,使接收者知道组成组合报文的各个SSRC。126表示视频H.264编码。SSRC:32 bits,同步信源,即产生媒体流的信源,随机值,一个会话中不能重复。
2023-07-14 14:39:19
618

原创 REMB-接收端最大接收码率评估
发送者不知道接收方的带宽情况,它需要有一个机制由接收方告诉它有多少带宽可供传输, 这样发送方可以根据这个估计的带宽来调整分辨率(90p, 180p, 360p, 720p等)和帧率(每秒24, 30, 40, 60帧等)abs_send_time 是一个以秒为单位的时间戳,总共 3 个字节(24 bit) , 格式为 6.18 (小数位固定为18位), 每 64s 会溢出环绕,分辨率为 3.8us。再结合接收端的接收的bitrate,来评估出接收的带宽。RTP sequence number 计算丢包。
2023-07-14 14:30:40
583

原创 RTCP/SRTCP介绍
length:16 bits,是该SR包以32比特为单位的总长度减一,包括头和 padding(减一是为了零长度有效和避免无限循环来寻找混合的 RTCP 报文,而 32-bit 字是避免对四的倍数的有效检查)。cumulative number of packets lost:24 bits,累计的包丢失数目,从开始接收到SSRC_n的包到发送SR,从SSRC_n传过来的RTP数据包的丢失总数。SSRC of sender(SSRC):32 bits,SR包发送者的同步源标识符。
2023-07-13 21:34:33
420
原创 ELK + Fliebeat + Kafka日志系统
随着 Beats 收集的每秒数据量越来越大,Logstash 可能无法承载这么大量日志的处理。虽然说,可以增加 Logstash 节点数量,提高每秒数据的处理速度,但是仍需考虑可能 Elasticsearch 无法承载这么大量的日志的写入。,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。2、Logstash 从消息队列中,读取数据,写入 Elasticsearch 中。, 它们都是开源软件。
2023-07-29 20:09:23
1165
原创 WebRTC问题列表
绿屏:15052 - webrtc - Web-based real-time communication - Monorail携带rrid 较大的RTX包无法发出:10297 - webrtc - Web-based real-time communication - MonorailFirefox在video receive only的时候不能发出REMB:1832521 - REMB is not sent when send transceivers are deactivated
2023-07-23 14:43:05
667
原创 git配置
分支:git cherry-pick commidId (多个commit的话,按序多次执行该命令)编写commit的log:git commit -m "this is your log"git commit -m "提交的描述信息" : 将暂存区中的文件提交到本地仓库中。暂存未提交的代码:git stash save "test-cmd-stash"git查看配置:git config --global --list。修改commit log:git commit --amend。
2023-07-22 17:00:09
350
1
原创 SDP基础
m行的数字 9 代表该媒体类型的传输端口,在 RTC 场景中都是使用 ICE candidate 的地址信息进行数据传输,所以 M line 的 port 并没有用到。不过,在 SIP 的场景下,M line 的 port 就十分重要了,此时,port 代表 RTP 端口,而且必须是偶数。结合 SDP 会话级别描述中的 C line 中的 IP 地址,我们就可以知道 SIP 的这路媒体流的传输地址。有的时候 mid 属性值也可以用数字表示,比如 a=mid:0,那么 0 也是这个 M 描述的 ID。
2023-07-22 15:57:37
279
原创 视频参数简介
Delay 一般300--500ms,超过1500ms认为不好。人能感觉到轻微延迟,但不影响通信互动。人感觉不到视频在通信过程中的延迟。人能感觉到延迟而且影响通信互动。400 ~ 800毫秒。
2023-07-19 16:09:54
762
原创 VScode通过SSH访问远端
3. 进入配置文件~/.ssh/config,增加本地私钥路径/Users/yumlu/sshkey。ssh-copy-id -i sshkey.pub username@远端Ip。HostName 远端name。生成私钥 和 公钥,然后。命令自动拷贝到远程 ~
2023-07-19 15:56:26
739
原创 带参启动浏览器以及生成log
启动命令:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome。启动命令:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome。查看log在:/Users/yumlu/Library/Application\ Support/Google/Chrome/退出所有正在运行的 Chrome 实例。
2023-07-18 22:16:20
755
原创 STUN/TURN/ICE
Type:字为属性的类型。除非特殊指定,否则其出现的顺序是有意义的:即只有第一次出现的属性会被接收端解析,而其余的将被忽略。(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。重发同样的request请求时可以重用相同的Transaction ID,但是客户端进行新的传输时,必须选择一个新的Transaction ID。1)最高的2位必须置零,这可以在当STUN和其他协议复用端口的时候,用来区分STUN包和其他数据包。
2023-07-16 22:16:28
506
原创 WebRTC基础
3.通信由ClientA发起,所以ClientA调用PeerConnection的CreateOffer接口创建自己的SDP offer,ClientA通过PeerConnection的SetLocalDescription方法将该SDP对象保存起来,并把这个SDP Offer信息通过Signal Server通道中转发给ClientB;在交换sdp信息的同时,ice信息也在进行交换,通过交换ice信息,最终会选择一种合适的方式来建立连接(p2p或者基于turn服务器的延时转发通路)
2023-07-16 21:09:40
1398
原创 Linux命令
如:显示Linux ubuntu 4.15.0-192-generic #203-Ubuntu SMP Wed Aug 10 17:40:03 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux,说明Linux内核版本是4.15.0。查找大文件:find . -type f -size +800M。或者cat /etc/lsb-release。查看系统内核版本:uname -a。目前linux 内核最新版本6.4。
2023-07-16 14:56:29
299
原创 Linux配置samba共享
samba共享:vim /etc/samba/smb.conf 中添加[share] comment = share browseable = yes path = /home writeable = yes public = no hosts allow = 10.0.0.0/8 create mask=0644 directory mask=0755...
2021-06-01 15:43:20
141
原创 Eclipse使用
Eclipse自带Maven插件:m2eclipseEclipse打开Maven工程:File->Import->Maven->Existing Maven Projects点击右键->Maven->Update Project…跳转到函数定义:Ctrl+鼠标左键 或者 Ctrl + t返回上一处:Alt + ←Eclipse中代码自动对齐 格式化:Ctrl+Shift+F批量注释:Ctrl + Shift + /解除批...
2021-06-01 15:34:47
1436
原创 JAVA入门
1、JAVA中,所有的数值类型所占据的字节数量与平台无关。2、JAVA没有任何无符号类型(unsigned)3、整型值和布尔值之间不能相互转换4、JAVA中必须使用final定义常量,如final int THREAD_MAX = 1024; final还可以作用与方法、类,都表示“不可改”的意思。5、大数,java.math包中BigInteger、BigDecimal类6、static关键字与C++中类似,静态常量用的比较多,如:...
2021-06-01 15:33:32
95
原创 Kubernets入门
Kubernets API Servertt通过一个名为kube-apiserver的进程提供服务,该进程运行在Master节点上,默认本机的8080端口。通常可以用命令行工具kubectl来与Kubernets API Server交互,其实它们之间的是REST接口调用。 Kubernets结构图1)每个Node节点上的kubelet每隔一个时间周期,就会调一次API Server的REST接口报告自身状态,AP...
2020-07-21 16:04:34
159
原创 gcc/g++编译
gcc and g++分别是gnu的c & c++编译器gcc最基本的用法是:gcc [options] [filenames]其中,options就是编译器所需要的参数,filenames给出相关的文件名称,最常用的有以下参数:[参数详解]-c只编译,不链接成为可执行文件。编译器只是由输入的 .c 等源代码文件生成 .o 为后缀的目标文件,通常用于编译不包含主程序的子程序文件。源文档 <https://www.cnblogs.com/te...
2020-07-15 16:02:04
228
原创 DLL的两种加载方式——静态加载和动态加载
案例简述在某项目中,需要使用两个不同版本的HCNetSDK库,我们通常使用的静态加载DLL的方式不能满足该需求,故用到动态加载DLL的方式。背景技术及术语解释静态加载:也称隐式调用,指在运行程序之前由操作系统的加载器将DLL和EXE一起加载到内存里。注意这里与程序的静态链接区别开来,静态链接发生在编译过程之中,而DLL的静态加载是发生在程序运行之前。动态加载:也称显示调用,指应用程序运行过程中程序自己完成对DLL的加载和卸载(DLL加载—DLL函数地址获取—DLL释放),应用程序在执行过程...
2020-07-07 16:32:11
12177
1
原创 使用Gsoap封装webservice
下载gsoap 下载后进入到所下载文件夹的这个路径下./ gsoap/bin/win32,这里有两个.exe文件soapcpp2.exe和wsdl2h.exe,这两个文件很重要 在任意地方建一个文件夹,任意命名,如E:/GsoapCompile 进入到gsoap下载的文件夹,拷贝./ gsoap/bin/win32下的两个.exe文件(soapcpp2.exe,wsdl2h.exe)和./gsoap下的stdsoap2.cpp,stdsoap2.h,typemap.dat文件到E:/GsoapComp
2020-06-30 17:50:47
182
原创 C++ win32、win64、linux32、linux64中各数据类型占字节数
win32 编译器: win64 编译器: linux32: linux64: ...
2020-05-28 13:58:58
566
原创 设计模式
单例模式、工厂模式、建造者模式、观察者模式、适配器模式、桥接模式、命令模式、策略模式、迭代器模式、解释器模式1、单例模式 class Singleton { private: Singleton(); public: static Singleton * GetInstance() { static S...
2020-05-26 14:18:53
175
原创 Linux系统知识
1、Linux操作系统的组成:内核、shell、文件系统、应用程序。2、Linux内核的组成:内存管理、进程调度、进程间通信、虚拟文件系统、网络接口。3、指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。常见的指令集有:x86、MIPS、Sparc、Alpha、ARM。...
2020-05-19 11:47:52
116
原创 Linux下GDB调试
1、启动:gdb 程序名2、设置断点:break 或者 b,如break 文件名:行号 查看断点:info break 删除断点:delete 断点号3、单步调试 继续运行到下一个断点:continue(简写c) 单步调试程序,当遇到函数调用时,也不进入此函数体,直接调用函数,不会进入到函数体内:next(简写n) 单步调试程序,当遇到调用用户自定义的函数,将进入到函数体中去运行:step(简写s)3、显示变量值...
2020-05-18 14:54:07
220
原创 RTSP over UDP与RTSP over TCP取流对比
本文详细介绍通过RTSP取流的过程,分析RTSP over UDP与RTSP over TCP在RTSP消息、媒体数据封装上的区别,并总结RTSP over UDP与RTSP over TCP的优缺点。 RTSP: Real Time Streaming Protocol,实时流协议,用于多媒体数据流的控制,如播放,暂停等。 RTP: Real-time Transport Protocol,实时传输协议,一般用于多媒体数据的传输。 R...
2020-05-13 10:46:54
9801
3
转载 CentOS下安装Code::Blocks_17.12
【转自:https://blog.youkuaiyun.com/ScnQuick/article/details/81941326】工具介绍目前最新版本 codeblocks_17.12.tar.xzhttp://www.codeblocks.org/downloads/source对应wxWidgets版本是wxWidgets-3.0.4(20MB)https://www.wxwidg...
2020-03-20 10:15:57
355
原创 CentOS系统安装配置
1、关闭防火墙 chkconfig iptables off 关闭selinux vi /etc/selinux/config 2、配置yum源 1)/etc/resolv.conf文件增加: nameserver 10.1.7.97 nameserver 10.1.7.98 2) curl -o /etc/yum.repos...
2020-03-04 23:12:42
243
转载 CentOS6 升级gcc版本以支持C++11
【转自:https://blog.youkuaiyun.com/weixin_38642130/article/details/86412609】解决问题在编译安装的时候碰到“configure: error: ***A compiler with support for c++11 language features is required.”是因为编译器版本不支持c++11,所以需要安装高版本gc...
2020-02-29 22:13:27
1369
原创 SIP协议
SIP:Session Initiation Protocol,会话初始化协议,是一个多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP协议的亮点却不在于它的强大,而是在于:简单!...
2020-01-06 19:35:55
175
原创 码流基础
负载类型(或载荷类型):视频、音频1、ES:Elementary Stream(基本码流),是由编码器输出的原始基础码流,它只含有解码器所必需的、并与原始图象或原始音频相接近的信息。由由压缩器输出的用于传送 单路视音频信号的原始码流。ES只包含一种内容的数据流,如只含视频或只含音频等。2、PES:Packetized Elementary Streams (分组的ES),ES形成的分...
2019-11-15 16:32:48
1518
原创 keepalived配置
global_defs { #全局定义快 router_id zhuji #MASTER和BACKUP不同}vrrp_script chk_health { #VRRP脚本声明 script "/etc/keepalived/chk_nc.s...
2019-09-26 11:33:25
176
原创 远程调试
参考来自:https://blog.youkuaiyun.com/fm0517/article/details/50405206将本地刚编译好的程序和pdb文件复制到远程机子上启动准备调试(注意:目标机器上的程序必须和本地的程序是一致的,否则无法进行远程单步调试)开发环境在A主机上(有源码,已安装VS),运行环境在B主机上(无源码,未安装VS,只有可执行程序exe或dll,以及对应的pdb文件)。...
2019-09-06 11:25:12
228
Elecard StreamEye Tools-视频分析电子眼.zip
2020-07-15
PMA模拟工具.zip
2020-06-30
codeblocks_17.12.tar.xz+wxWidgets-3.0.4.tar.bz2源码.zip
2020-03-04
Elecard StreamEye Tools.zip
2019-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人