- 博客(340)
- 资源 (3)
- 收藏
- 关注
原创 C++11新特性
通过测试代码可以看出,在子类中初始化从基类继承的类成员,需要在子类中重新定义和基类一致的构造函数,这是非常繁琐的,C++11中通过添加继承构造函数这个新特性完美的解决了这个问题,使得代码更加精简。atuo定义变量时必须初始化,因为就是对变量被赋的值推到处出变量的类型,因此它不能作函数形参,类的成员是const时,才能用auto,因为const变量必须初始化。declaration表示遍历声明,当前遍历到的元素会被存储到声明的变量中,expression是要遍历的对象,可以是表达式,容器,数组,初始化列表。
2024-09-12 09:36:53 453
原创 #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 260
原创 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 383
原创 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 208
原创 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 402
原创 编译exosip作为webrtc信令,连接freeswitch
官方api解释使用一下方法可以注册成功-c就是realm数字签名的摘要改为因此如果不改的话,应该这么写。
2024-06-26 09:26:51 398
原创 如何给目录打patch
目录b中文件在目录a中文件的基础上作了些新增修改,现在打patch,列出这些修改,并且把这些新增修改添加到目录c中的文件中。注意c需要也是a的改版,不然有冲突的地方,最后一步会出冲突。#生成补丁文件,比较目录 b 和 a。#应用补丁文件,将修改添加到目录 c。
2024-06-05 09:26:37 186
原创 yangwebrtc x86_64环境搭建
开启之后,无法编译,报未定义的引用,因为作者在这个版本根本就没有实现,如下类,未定义三个函数的实现。用qt打开以下两个项目的.pro。用qt打开以下两个项目的.pro。可以用metartc更高版本。编译后会生成在这个目录。编译后会生成在这个目录。版本:5.0.099。
2024-05-30 11:56:13 610
原创 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 675
原创 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 1388
原创 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 893
原创 MetaRTC-play拉流客户端代码分析
当点击播放按钮后,以此调用的类如下,开始建立rtc连接,AV解码,音频渲染,视频渲染。渲染使用opengl,音频播放使用alsa。
2024-05-13 17:21:54 284
原创 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 918 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 540 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 496
原创 如何查看chrome里network的payload
如何查看chrome的network的请求payload,点击漏斗形状的过滤器,过滤框清空,表示检测所有,右边按钮点击“全部”,“第三方请求”不要勾选。
2024-03-19 13:43:18 1599
原创 curl c++ 实现HTTP GET和POST请求
系统也有curl库,为防止冲突,删去编译好的curl库,只用它的头文件。curl //DV2020T环境下此步骤可省略。笔者安装为7.85.0版本。Makefile文件。
2024-03-12 11:40:20 932
原创 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 157
原创 freeswitch报错 Reason: Q.850;cause=88;text=“INCOMPATIBLE_DESTINATION“
fs报错 Reason: Q.850;
2024-01-19 14:40:59 509
原创 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 930
原创 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 682
原创 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 947
原创 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 520
原创 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 235
原创 FS的application和基础概念
但是有一些客户端设置,如果呼叫来的用户没有注册的话,那么不允许它打电话,不过这是客户端的设置和服务器无关,服务器也可以作这个策略,不注册不让打电话,所以一般都先注册。在/usr/local/freeswitch/conf/directory/default/下可以看到1000-1019这些默认用户,在这里可以模仿创建新用户,也可以修改默认的密码1234。作一个桥,当拨打3的时候,自动拨打1001的用户,如果此用户已经注册到服务器里,那么它就会开始振铃,这叫做呼叫字符串。
2023-12-13 17:30:28 110
原创 freeswitch webrtc video_demo客户端进行MCU的视频会议
系统环境一、编译服务器和加载模块二、下载编译video_demo三、配置verto.conf.xml1.修改配置文件2.重新启动四、MCU通话测试1.如何使用video_demo2.测试结果五、MCU的通话原理及音视频参数配置附录笔者微信,入群讨论。
2023-12-10 19:02:29 441
原创 freeswitch webrtc 两个verto_communicator客户端进行MCU的视频会议
系统环境一、编译服务器和加载模块二、下载编译verto_communicator三、开启第二个客户端四、视频通话测试结果系统环境。
2023-12-10 18:00:27 1236
原创 freeswitch webrtc MCU三个配置文件,及conference全命令解释
原本如下,以上是指定为moderator,指定后verto界面会多显示信息,比如有几人在会议,设置布局等,这样设置后所有呼叫35开头的比如3500都是管理员了,可以自定义的精确设置。可以看到默认使用的是group:grid,上面还有对视频帧率,分辨率,音频参数的设置,各种铃声的设置,interval间隔设置,其中“mux”就是指mcu。播放一个视频,这个视频会多个路视频流贴到画布上,播放的视频floor=“true”,默认是up_top画布,也就是最大。video_demo 用jequre写的,
2023-12-08 19:21:10 539
原创 freeswitch编译mod_av支持webrtc MCU通话
系统环境一、FS相关网站二、第三方库安装1.apt安装2.指定版本sofia-sip安装3.指定版本spandsp安装4.指定版本libks安装5.指定版本openssl安装三、指定版本FS安装1.CPPFLAGS配置2.编译器版本3.FS配置编译四、FS,fs_cli运行,模块加载附录1.安装包,FS,编译好的两个浏览器客户端压缩包2.video-demo和Verto Communicator的github地址3.demo相关WIKI。
2023-12-08 19:16:43 1303
原创 nodejs介绍
客户端把用户名密码发送给服务器,服务器对用户名和密码加密成字符串,也就是Token,再把它发给客户端,客户端下次请求时通过请求头的Authorization字段,将Token发送给服务器,服务器受到后,把Token解密成用户名和密码,然后再验证,成功则返回给请求的内容。//中间件的一个作用,由于所有的中间件公用req和res,那么就可以在上游的中间件中添加自定义的属性或方法,供下游的中间件或路由使用。1.CORS(主流的解决方案,推荐使用,它只支持GET,POST,HEAD,不支持PUT,DELETE)
2023-12-03 21:38:57 441
原创 CURL添加HTTPS
CURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。首选删除系统自带的openssl,因为他只有可执行程序和库,没有头文件。系统也有curl库,为防止冲突,删去编译好的curl库,只用它的头文件。首选删除系统自带的curl,因为他只有可执行程序和库,没有头文件。openssl官网,笔者使用版本3.2.0。curl官网,笔者安装为7.85.0版本。
2023-11-24 15:09:25 1019
原创 srs的webrtc信令分析
rtc/v1/whip-play/,这是拉流接口,作用是也是交换 SDP,只是采用的 是WebRTC 的标准信令,由 SrsGoApiRtcWhip::serve_http() 来处理。/rtc/v1/whip/,这也是推流接口,作用是也是交换 SDP,只是采用的 是WebRTC 的标准信令,由 SrsGoApiRtcWhip::serve_http() 来处理。可以看到获得了这个2个客户端详细的信息,他们的ip,name,id等,没有。这个是srs自定义的信令,更多详细见上文给到的官网。
2023-11-22 23:47:41 2765
原创 whip和whep
url为: http://192.168.1.98:8090/unsubscribe/2001/6547/4489。url为: http://192.168.1.98:8090/subscribe/2001/6547/4489。url为: http://192.168.1.98:8090/unpublish/2001/6547。url为: http://192.168.1.98:8090/publish/2001/6547。其中uid为自己的uid,remoteUid为想要订阅的远端uid。
2023-11-22 22:27:26 807
原创 srs webrtc推拉流环境搭建(公网)
关于信令的交互:我们打开这个推拉流连接,那么浏览器就去所在的ip地址去寻找srs服务,然后与其中的https服务器交互,下载页面,当我们填好URL地址,点击开始推流或播放视频按钮时,我们的浏览器客户端先与https交互信令,比如推流和拉流信令等,具体可以参考如下连接,然后进行sdp交互,之后是stun bind request/response交互,之后是DTLS握手,然后开始建立好webrtc传输通道,正式传输音视频流。如果我们准备自己开发信令服务器,我建议还是在这篇环境的基础上开发,较为灵活。
2023-11-16 17:08:18 1913 1
原创 srs webrtc推拉流环境搭建(本地)
关于信令的交互:我们打开这个推拉流连接,那么浏览器就去所在的ip地址去寻找srs服务,然后与其中的https服务器交互,下载页面,当我们填好URL地址,点击开始推流或播放视频按钮时,我们的浏览器客户端先与https交互信令,比如推流和拉流信令等,具体可以参考如下连接,然后进行sdp交互,之后是stun bind request/response交互,之后是DTLS握手,然后开始建立好webrtc传输通道,正式传输音视频流。如果我们准备自己开发信令服务器,我建议还是在这篇环境的基础上开发,较为灵活。
2023-11-09 01:34:48 1233 4
原创 webrtc推拉流 srs报错:DTLS_HANG DTLS: > Hang, done=0, version=-1, arq=0
原因是因为conf/rtc.conf中candidate的配置,当推拉流浏览器在本地时,如果srs也在本地,那么可以使用官网默认。如果srs在公网上,由于srs是lite-ice端,导致他不会主动到srs获取自己的公网ip,因此需要在这里帮他指定 ,他才会把这个ip放到sdp中,发给full-ice的浏览器客户端。切忌什么时候都不可以写为127.0.0.1,也会报上述错误,如果浏览器和srs都在一个pc上,也可以使用 “*” 如"candidate *;
2023-11-08 22:31:23 683
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关注的人