- 博客(351)
- 资源 (3)
- 收藏
- 关注
原创 quic特性介绍
接下来的发送和接收端都是发送端:因为要发送的数据包的packet number是递增的,即使是重传包,丢掉了就后续重新传递,因此没有被ack的包不会阻塞拥塞控制窗口的滑动。这是形象的理解,真实的情况是,TCP一次可以发送一个窗口的包,但需要这个窗口的包都收到确认,才会滑动窗口,发送下一个窗口。如图一个连接中的每个流在接收端都有自己的拥塞控制窗口,当已读取数据大于总的缓存的1/2,那么开始向右滑动,把已读数据上交给应用层,在服务器端增加缓存来抗乱序,丢包,延时应该是在给这个拥塞控制窗口加缓存。
2025-01-03 13:14:07
935
原创 GCC-webrtc
webrtc M96版本的GCCsudo tc qdisc del dev eth1 root //关闭限速gcc对网络抖动和丢包很敏感,一旦出现这两种情况,就会出现估计值的剧烈下降。基于延迟的带宽估计,码率一直增长,直到RTT表示过载,此时的码率接近带宽。基于丢包的带宽估计,丢包率小于2%,继续增加码率,2-10%保持不变,10%以上降低码率。基于丢包的估计值,不能超过基于延迟的带宽估计值,基于延迟的带宽估计值不能超过吞吐量的估计值X1.5+10kbps。
2024-12-14 17:45:01
693
原创 tcpdump编译 wireshark远程抓包
以上两个库是安装 libpcap需要的库,在ubuntu下可直接apt-get install flex,apt-get install bison,不用手动编译。在官网下载最新的如下两个库。
2024-12-12 18:14:10
600
原创 令牌桶 漏桶
系统根据自己的负载能力,以一定速率把令牌放入令牌桶,直到放满为止,桶的大小是固定的,当用户请求时,需要先去令牌桶取令牌,拿到令牌后才会放行,不然延迟投递||丢包。进来的请求就是水,请求进入水桶要从低下的漏洞放行,不管进来的多少,桶底的漏洞大小是一定的。水桶大小也是一定的,水桶满了就丢包||延迟投递。令牌桶算法是以固定的速度往桶里放令牌,漏桶的算法是以固定的速度放行请求。令牌是按个的,对于服务器的令牌桶算法,一个令牌放行一次http请求,对于音视频的MTU包,基站的算法,一个令牌放行一个MTU包?
2024-12-08 11:28:10
317
原创 tc 命令
Windows Network Shaper目前只能在win10及以下版本使用,在github上有源码。sudo tc qdisc del dev eth1 root //关闭限速。webrtc M96版本的GCC。Linux tc 命令。限速 500kbps。
2024-11-30 21:12:59
336
原创 Nginx介绍+openresty配置
其实也就是配置正向代理,代理两台服务器,这两台服务器可以跟nginx是同一局域网的,也可以是不同区域有公网IP的。nginx不关注自己代理的是客户端还是服务器,它其实代理的是它能访问到的ip,把流量转发到这些ip上。2.基于端口,很少用,比如http://www.sherlock.net //80端口为默认可以省略 http://www.sherlock.net:8080,只需要复制conf/nginx.conf里的server,然后换不同的端口即可。正向代理:从局域网访问Nginx,成功访问到公网。
2024-10-19 18:10:38
1351
原创 openresty安装
OpenResty 是一个基于 NGINX 的全功能 Web 平台,集成了大量的第三方模块和库,其中最重要的是 ngx_lua 模块,它允许在 NGINX 配置中嵌入 Lua 脚本,实现高级的请求处理逻辑、动态内容生成、访问控制等功能。这只是 OpenResty 的一小部分功能展示,实际使用中可以结合更多的模块和功能,如 ngx_http_lua_upstream、ngx_http_headers_more、ngx_stream_lua 等,以实现更复杂的 Web 应用和服务。编写第一个hellow。
2024-10-18 14:42:04
731
原创 State_Threads实现多协程服务器
/* * Portions created by SGI are Copyright (C) 2000 Silicon Graphics, Inc. * All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met:
2024-10-16 18:26:47
427
原创 C++11新特性
通过测试代码可以看出,在子类中初始化从基类继承的类成员,需要在子类中重新定义和基类一致的构造函数,这是非常繁琐的,C++11中通过添加继承构造函数这个新特性完美的解决了这个问题,使得代码更加精简。atuo定义变量时必须初始化,因为就是对变量被赋的值推到处出变量的类型,因此它不能作函数形参,类的成员是const时,才能用auto,因为const变量必须初始化。declaration表示遍历声明,当前遍历到的元素会被存储到声明的变量中,expression是要遍历的对象,可以是表达式,容器,数组,初始化列表。
2024-09-12 09:36:53
728
原创 #if defined(WEBRTC_USE) webrtc.a的宏机制
ifndef是 if not define的缩写,#ifdef 是 if define 的缩写。3.由上可以看到#if预处理后不仅可以接define,还可以比较宏的大小。define有两种,一种是单纯宏定义,一种是定义宏为特定值。由于定义值包含定义,因此也可以与。1.2定义值作编译处理。2.单纯定义,此时和。
2024-07-11 19:13:07
317
原创 ioctl方式采集/dev/videoX
应用程序通过API接口提供的方法(VIDIOC_REQBUFS)申请若干个视频数据的帧缓冲区,申请帧缓冲区数量一般不低于3个,每个帧缓冲区存放一帧视频数据,这些帧缓冲区在内核空间。设置视频的制式,制式包括PAL/NTSC,使用ioctl(fd_v4l, VIDIOC_S_STD, &std_id)设置视频帧格式,包括帧的点阵格式,宽度和高度等,使用ioctl(fd_v4l, VIDIOC_S_FMT, &fmt)设置视频的帧率,使用ioctl(fd_v4l, VIDIOC_S_PARM, &parm)
2024-07-09 13:17:49
514
原创 webrtc m120/m126版本编译错误
src/examples/BUILD.gn中,找到stunserver,将对此工程的编译除去。不编译这个demo并不影响生成的libwebrtc.a。在g++9编译器带的库中报错,应该是与webrtc-m120版本不匹配,升级成gcc/g++11后OK。这个报错意思是为结构体内没有添加上初始化函数?在m126版本中,出现以下错误。
2024-06-27 14:43:50
335
原创 webrtc-m120编译 (m126)
目标cpu架构,ios:arm,arm64,x64,x86,Android:arm,arm64,x86(32位),x64(64位),Windows:x86、x64。is_component_build 是否使用动态运行期库,这里取false,使用静态运行期库,Release版本将对应MT,Debug版将对应MTd。是否使用动态运行期库,这里取false,使用静态运行期库,Release版本将对应MT,Debug版将对应MTd。是否是Debug版,这里取false,表示编译Release版。
2024-06-26 15:20:14
558
原创 编译exosip作为webrtc信令,连接freeswitch
官方api解释使用一下方法可以注册成功-c就是realm数字签名的摘要改为因此如果不改的话,应该这么写。
2024-06-26 09:26:51
482
原创 如何给目录打patch
目录b中文件在目录a中文件的基础上作了些新增修改,现在打patch,列出这些修改,并且把这些新增修改添加到目录c中的文件中。注意c需要也是a的改版,不然有冲突的地方,最后一步会出冲突。#生成补丁文件,比较目录 b 和 a。#应用补丁文件,将修改添加到目录 c。
2024-06-05 09:26:37
286
原创 yangwebrtc x86_64环境搭建
开启之后,无法编译,报未定义的引用,因为作者在这个版本根本就没有实现,如下类,未定义三个函数的实现。用qt打开以下两个项目的.pro。用qt打开以下两个项目的.pro。可以用metartc更高版本。编译后会生成在这个目录。编译后会生成在这个目录。版本:5.0.099。
2024-05-30 11:56:13
669
原创 MetaRTC-ffmpeg arm移植
注意这里的dl和pthread是调用交叉编译工具链中的库;当写在同一个–extra-libs里时没有顺序之分,如果用两个–extra-libs,那么就有加载的顺序之分,比如crypto里要用到dl,那么dl就需要放在它的前面加载。metartc支持mips32位,支持arm64,不支持arm32位,在arm32下报下列错误,这个错误是对内存的越界操作,然后再free(),目前metartc6和7都不支持arm32。将这两个文件放入libmetartc6。在build中到.a。
2024-05-25 13:18:44
1939
原创 ffmpeg-webrtc(metartc)给ffmpeg添加webrtc协议
后者目前还不支持whep(应该在开发中),因此推荐使用metartc的库。1.metartc6,这里有webrtc的传输协议。4.编译ffmpeg,注意下面路径改为自己的路径。首选它有三个第三方库,先编译这三个库。3.ssl和crypto。3.ssl和crypto。5.推流命令 WHIP。6.拉流命令 WHEP。5.推流命令 WHIP。6.拉流命令 WHEP。4.编译ffmpeg。
2024-05-24 14:09:34
2807
原创 MetaRTC arm32 CMake交叉编译
set(CMAKE_CXX_COMPILER “/home/yqw/MetaRTC/BC/stbgcc-6.3-1.1/bin/arm-linux-g++”)//c++编译器。set(CMAKE_C_COMPILER “/home/yqw/MetaRTC/BC/stbgcc-6.3-1.1/bin/arm-linux-gcc”)//c编译器。https://github.com/cisco/openh264/releases //官网有交叉编译指南。//编写cmakelist.txt。
2024-05-17 09:45:10
1043
原创 MetaRTC-play拉流客户端代码分析
当点击播放按钮后,以此调用的类如下,开始建立rtc连接,AV解码,音频渲染,视频渲染。渲染使用opengl,音频播放使用alsa。
2024-05-13 17:21:54
592
原创 MetaRTC-push推流客户端代码分析
linux/demo/metapushstream7/yangpush/YangRtcPublish.cpp//调用YangPeerConnection2类,进行推拉流。linux/demo/metapushstream7/video/YangYuvPlayWidget.h//Yang_OS_APPLE平台用,linux下废弃。linux/demo/metapushstream7/yangpush/YangPushPublish.cpp//对以上的AV的采集和编码接口再次封装。推流whip/webrtc。
2024-05-13 16:43:19
1105
1
原创 调用Mertc的接口
metaRTC5.0版本 API进行了重构,本篇文章将介绍webrtc传输调用流程和例子。2.配置metartc7/5环境,编译metapush7和metaplay7,并测试推拉流。头文件:include/yangrtc/YangPeerConnection2.h。头文件:include/yangrtc/YangPeerConnection.h。libmetartccore2工程为C版webrtc实现。3.编译demo调用metartc7 api,排查错误。MetaRTC 连接信息回调函数。
2024-05-10 17:29:01
642
2
原创 x86_64 ubuntu22.04编译MetaRTC
用QT打开demo里的metaplayer7,metapushstream7,并编译,注意QT的工程项目生成路径建议使用默认的,如果自定义的话,需要同级目录,因为.pro里用到了这个目录。下载yangh264decoder(从metartc7开始,解码由ffmpeg改为重新造的轮子yangh264decoder,这个库编译后只有1M,适合嵌入式)将上面编译的libyangh264decoder.a,放到linux/thirdparty/lib中。放到linux/thirdparty/lib中。
2024-03-29 13:29:02
711
原创 如何查看chrome里network的payload
如何查看chrome的network的请求payload,点击漏斗形状的过滤器,过滤框清空,表示检测所有,右边按钮点击“全部”,“第三方请求”不要勾选。
2024-03-19 13:43:18
2541
原创 curl c++ 实现HTTP GET和POST请求
系统也有curl库,为防止冲突,删去编译好的curl库,只用它的头文件。curl //DV2020T环境下此步骤可省略。笔者安装为7.85.0版本。Makefile文件。
2024-03-12 11:40:20
1174
原创 SDP解释
generous:假如客户端提供编码优先级为PCMA,G729,而FS支持的优先级为G729,PCMU,PCMA。假如leg A只支持PCMA,leg B只支持PCMU,FS支持的编码、先级为PCMU、PCMA,那么此时leg A发送invite后,会得到488的返回码,而不是200 OK,因为FS默认不支持转码。端口限制锥:在限制锥的基础上加了限制,外网公网主机在发送给内部主机之前,内部主机必须先向该外部公网主机的ip1:port1发送过数据,而且该外部公网主机,必须使用这个ip1:port1发才行。
2024-03-04 15:48:15
245
原创 freeswitch报错 Reason: Q.850;cause=88;text=“INCOMPATIBLE_DESTINATION“
fs报错 Reason: Q.850;
2024-01-19 14:40:59
841
原创 fs基本命令
查看版本给用户1000打电话,app是echo,就是对方能听到自己的回声。给用户1000打电话,app是echo,就是对方能听到自己的回声,主叫号码是7777主叫名称是Seven Du,由于中间有空格,所以用单引号。查看originate都支持哪些参数把所有电话都挂断hupall打印出来有哪些用户注册如果你的服务器上没有这个文件,则执行linphonec命令,此命令会自动生成该文件修改FS的sip等默认端口FS的基本概念没有学习ubuntu22.04编译需要先卸载本身的openssl。
2023-12-25 14:21:52
976
原创 nvm node npm安装
nvm uninstall 8.12.0 # 卸载指定版本,如8.12.0。nvm install 8.12.0 # 安装指定版本,如8.12.0。nvm use 8.12.0 # 使用指定的版本,如8.12.0。nvm ls-remote # 查看可安装的版本。nvm ls # 查看已安装的node版本。
2023-12-20 20:08:51
725
原创 FS的Dialplan
什么是Dialplan当一通电话拨打进来,FS是播放回音,播放声音,还是桥接到另个电话,这样选择的路由的过程就是Dialplan客户端与FS打电话其实就是在跟application交互。有三个dialplan,这个是default.xml,还有public.xml和featrues.xml,除了xml的格式,还有enum和安澜格式。features里是一些特性,它在usr/local/freeswitch/conf/dialplan/features.xml,这三个文件都在同一个目录下。 这个Test
2023-12-17 18:16:59
1024
原创 FS的sip信令
sig的信令invite(呼叫 ,会把sdp放在这里发送),ack,cancel,options,bye,refer,notify,message,subscribe,info。sip协议是信令协议,用于建立会话,它需要其他协议配合使用,比如rtp协议,用来传输数据。sdp协议,用来描述媒体信息。fs主要的信令是sip,sip默认的端口是5060。注册机制,认证,和鉴权。
2023-12-13 19:16:41
579
原创 freeswitch报错:mod_verto.c:1984 [::1]:39622 WS SETUP FAILED
verto_communicator还是video_demo都是使用wss登陆的,建立session会话使用的是sip信令。这里主要是证书的问题。把其中的localhost或者127.0.0.1改为自己的ip,用ifconfig去看。
2023-12-13 18:51:48
358
原创 FS的application和基础概念
但是有一些客户端设置,如果呼叫来的用户没有注册的话,那么不允许它打电话,不过这是客户端的设置和服务器无关,服务器也可以作这个策略,不注册不让打电话,所以一般都先注册。在/usr/local/freeswitch/conf/directory/default/下可以看到1000-1019这些默认用户,在这里可以模仿创建新用户,也可以修改默认的密码1234。作一个桥,当拨打3的时候,自动拨打1001的用户,如果此用户已经注册到服务器里,那么它就会开始振铃,这叫做呼叫字符串。
2023-12-13 17:30:28
151
原创 freeswitch webrtc video_demo客户端进行MCU的视频会议
系统环境一、编译服务器和加载模块二、下载编译video_demo三、配置verto.conf.xml1.修改配置文件2.重新启动四、MCU通话测试1.如何使用video_demo2.测试结果五、MCU的通话原理及音视频参数配置附录笔者微信,入群讨论。
2023-12-10 19:02:29
603
原创 freeswitch webrtc 两个verto_communicator客户端进行MCU的视频会议
系统环境一、编译服务器和加载模块二、下载编译verto_communicator三、开启第二个客户端四、视频通话测试结果系统环境。
2023-12-10 18:00:27
1449
metartc的crypto.a,libopus.a,libsrtp2.a,libssl,平台:rv1126,mstar336
2024-05-30
安装盘制作工具,用于制作安装盘,下面是博客使用链接
2023-09-22
脚本自动化 在N5105上配置ffmpeg+qsv环境,h264-qsv和hevc-qsv的cbr/vbr都可以使用,fdk-a
2022-12-23
peerconnection_server和peerconnection_client
2022-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人