- 博客(151)
- 资源 (22)
- 收藏
- 关注
原创 puppeteer入门指南
Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过。协议控制 Chromium 或 Chrome。2、安装puppeteer-core。1、安装nodejs最新版。3、编写main.js。
2023-12-22 15:32:14 897
原创 Opus前向纠错
官网:https://opus-codec.org/Github:https://github.com/xiph/opus一、简介Opus 可以处理广泛的音频应用,包括 IP 语音、视频会议、游戏内聊天,甚至远程现场音乐表演。它可以从低比特率的窄带语音扩展到非常高质量的立体声音乐。支持的功能有:比特率从 6 kb/s 到 510 kb/s 采样率从 8 kHz(窄带)到 48 kHz(全带) 帧大小从 2.5 ms 到 60 ms 支持恒定比特率 (CBR) 和可变比特率 (VBR)
2022-04-10 22:30:55 2779 1
原创 WebRTC RTCP XR
RTCP扩展报告(XR)用于补充RTCP 的发送方报告 (SR) 和接收方报告 (RR) 数据包的报告块中的六个统计信息。Value Name Long Name Description Reference 1 RRT Receiver Reference Time 接收方参考时间 rfc3611#section-4.4 2 DLSR Delay since the last Sender Report 自上次发送方报告以来的延迟
2022-04-09 21:58:38 1802
原创 WebRTC RTCP PS Feedback
作为WebRTC RTCP消息中的一种,PS Feedback包含的内容同样也很多。在RTCP Header中,这类消息的负载类型Payload Type=206,反馈消息类型FMT如下:FMT Name Long Name Description Reference 1 PLI Picture Loss Indication 图片丢失指示 RFC4585 2 SLI Slice Loss Indication 切片丢失指示
2022-04-09 21:12:47 754
原创 WebRTC RTCP RTP Feedback
作为WebRTC RTCP消息中的一种,RTP Feedback包含的内容很多,所以这里单独介绍。在RTCP Header中,这类消息的负载类型Payload Type=205,反馈消息类型FMT如下:FMT Name Long Name Description Reference 1 NACK Generic negative acknowledgement 丢包重传请求 RFC4585 3 TMMBR Temporary Maxi
2022-04-09 15:42:20 897
原创 WebRTC RTCP
RTCP作为RTP控制协议,对于弱网下音视频质量和会话控制具有重要的作用。RTCP header 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
2022-04-06 22:38:57 850
转载 WebRTC RTP Header Extension
一、RTP Header扩充在RFC3550中, 一个通用的RTP头部如下: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |V=2|P|
2022-03-31 16:04:02 608
原创 WebRTC RTP
一、简介实时传输协议(RTP)为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。RTP 本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于底层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不
2022-03-31 15:07:29 707
原创 Linux平台CEF离屏渲染
一、简介Chromium 嵌入式框架 (CEF)。是一个简单的框架,用于将基于 Chromium 的浏览器嵌入到其他应用程序中。CEF 支持广泛的编程语言和操作系统,并且可以轻松集成到新的和现有的应用程序中。它的设计从一开始就兼顾了性能和易用性。基本框架包括通过本机库公开的 C 和 C++ 编程接口,这些库将主机应用程序与 Chromium 和 Blink 实现细节隔离开来。它提供了浏览器和主机应用程序之间的紧密集成,包括对自定义插件、协议、JavaScript 对象和 JavaScript 扩展的
2022-01-25 17:04:47 3654 3
原创 Linux平台Mediasoup客户端开发指南
1、下载depot_toolsgit clone https://chromium.googlesource.com/chromium/tools/depot_tools.git2、设置环境变量export PATH=$PATH:/home/user/depot_tools3、下载webrtcmkdir webrtccd webrtcfetch --nohooks webrtcgclient synccd srcgit checkout -b m94 refs/rem..
2022-01-24 22:23:02 2397
转载 搭建Ubuntu-Server20.04图形界面
一、Ubuntu服务器搭建图形界面1、更新软件源apt-get update2、安装桌面环境所需的软件包,包括系统面板、窗口管理器、文件浏览器、终端等桌面应用程序apt install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal ubuntu-desktop3、安装VNCapt-get install tightvncserver4、启动VNCvncserver5、第一次启动
2022-01-19 10:02:35 9171
原创 ubuntu安装最新版本cmake
一、卸载系统老版本cmakesudo apt autoremove cmake二、下载最新版本cmakecmake官网:Download | CMake三、安装sudo ./cmake-3.22.1-linux-x86_64.sh --prefix=/usr/bin/ --skip-license
2022-01-05 17:02:53 1983
转载 FFmpeg内存模型
内存模型简介从av_read_frame读取到一个AVPacket后怎么放入解码器队列? 从avcodec_recevice_frame读取到一个AVFrame后又怎么放入解压后的帧队列? 从现有的Packet拷贝一个新Packet的时候,有两种情况: ①两个Packet的buf引用的是同一数据缓存空间,这时候要注意数据缓存空间的释放问题。 ②两个Packet的buf引用不同的数据缓存空间,每个Packet都有数据缓存空间的copy。 内存模型更为精确的模型.
2021-12-31 16:22:50 271
原创 Linux平台Libyuv使用指南
官网:https://chromium.googlesource.com/libyuv/libyuv一、简介libyuv是一个google的开源项目,支持包括 YUV 缩放和转换功能。二、下载及编译git clone https://chromium.googlesource.com/libyuv/libyuvcd libyuvcmake .makemake install...
2021-12-31 15:11:36 2406
原创 FFmpeg常用命令大全
1、mp4文件转flv文件ffmpeg -i tiktok.mp4 -pix_fmt yuv420p -c:v libx264 -r 30 -profile:v baseline -b:v 2000k -acodec aac -ab 128k -ac 2 -ar 48000 -f flv tiktok.flv2、flv文件转rtp流ffmpeg -re -stream_loop -1 -i test.flv -an -vcodec copy -payload_type 107 -f rtp
2021-11-18 13:37:58 1042
原创 基于usrsctp接入webrtc服务器中的DataChannel功能
1.DataChannel简介在webrtc中通过DataChannel,可以实现点对点的消息通信,这些消息和音视频数据是通过同一udp socket被发送给对方的,因此也是具备NAT穿透功能的。DataChannel可以用来进行聊天消息的发送、点对点传送文件等,作为音视频通信外的另一种通信方式,DataChannel的意义还是很重要的。2.方案概述待续...参考:1、SCTP通用报文格式2、https://github.com/sctplab/usrsctp/blob/.
2021-11-01 13:06:17 2537 1
原创 解决ImportError: DLL load failed while importing _framework_bindings
python版本的mediapipe安装完成后,报错:ImportError: DLL load failed while importing _framework_bindings: 找不到指定的模块。解决方案是:pip install msvc-runtime
2021-10-04 21:35:34 3060 2
转载 云服务器网络访问丢包
可能原因引起云服务器网络访问丢包问题的可能原因如下:触发限速导致 TCP 丢包 触发限速导致 UDP 丢包 触发软中断丢包 UDP 发送缓冲区满 UDP 接收缓冲区满 TCP 全连接队列满 TCP 请求溢出 连接数达到上限前提条件在进行问题定位及处理前需登录实例,详情请参见登录 Linux 实例及登录 Windows 实例。故障处理触发限速导致 TCP 丢包云服务器实例具备多种规格,且不同规格有不同的网络性能。当实例的带宽或包量超过实例规格对应的标准时,会触发平...
2021-08-30 16:54:48 640
原创 Mediasoup支持的RTP流类型
{ "response": true, "id": 6773573, "ok": true, "data": { "codecs": [ { "kind": "audio", "mimeType": "audio/opus", "clockRate": 48000, "channels": 2, .
2021-07-01 14:25:50 617
转载 H.264视频Profile-level-id字段解析
基于SIP协议的VOIP通信,该字段通常位于视频协商sdp报文中,如:1 video 23456 RTP/AVP 121 2 rtpmap:121 H264/90000 3 fmtp: 121 profile-level-id=42801E; packetization-mode=1 42801E分三部分0x42660x801000 0000 (二进制)0x1E30对应profile_idc(8 bits)、profile_iop(8 bits)、level_i...
2021-07-01 11:42:30 3521
原创 Libuv编程指南
官网:http://libuv.org/GitHub:https://github.com/libuv/libuv中文文档:http://luohaha.github.io/Chinese-uvbook/一、简介libuv是一个支持多平台的异步IO库,它主要是为了node.js而开发的,但是也可以用于Luvit, Julia, pyuv及其他软件。libuv强制使用异步的,事件驱动的编程风格。它的核心工作是提供一个event-loop,还有基于I/O和其它事件通知的回调函数。li..
2021-05-20 18:51:37 743
原创 剑指offer之把字符串转换成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空返回值描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入"+2147483647"返回值2147483647示例2输入"1a33"返回值0class Solution {public: int StrToInt(string str) {
2021-02-20 11:30:55 123
原创 剑指offer之求1+2+3+...+n
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例1输入5返回值15class Solution {public: int Sum_Solution(int n) { (n > 1) && (n += Sum_Solution(n-1)); return n; }};...
2021-02-20 10:11:39 120
原创 算法技巧
一、标准库void reverse (BidirectionalIterator first, BidirectionalIterator last);功能:用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素)string substr (size_t pos = 0, size_t len = npos) const;功能:复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度
2021-02-19 20:13:15 137
原创 剑指offer之翻转单词顺序列
题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?示例1输入"nowcoder. a am I"返回值"I am a nowcoder."class Sol
2021-02-19 19:59:25 106
原创 剑指offer之左旋转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!示例1输入"abcXYZdef",3返回值"XYZdefabc"class Solution {public: string LeftRotateString(strin
2021-02-19 18:20:01 120
原创 剑指offer之和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。返回值描述:对应每个测试案例,输出两个数,小的先输出。示例1输入[1,2,4,7,11,15],15返回值[4,11]class Solution {public: vector<int> FindNumbersWithSum(vector<int> array,int sum) {
2021-02-19 17:23:05 101
原创 剑指offer之和为S的正整数序列
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!返回值描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序示例1输入9返回值[[
2021-02-19 16:58:43 112
原创 剑指offer之数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { vector<int> res; unordered_map<int, int> map; for(int i:data)
2021-02-19 14:06:56 103
原创 剑指offer之两个链表的第一个公共节点
题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindFirstCommonNode( ListNode* pHead1
2021-02-19 13:06:41 112
原创 剑指offer之第一个只出现一次的字符
题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)示例1输入"google"返回值4class Solution {public: int FirstNotRepeatingChar(string str) { unordered_map<char, int> map; for(char
2021-02-19 09:49:27 131
原创 剑指offer之丑数
题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。示例1输入7返回值8class Solution {public: int GetUglyNumber_Solution(int index) { if(index < 1) return 0; vector<int> res(
2021-02-19 09:06:18 113
原创 剑指offer之把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。示例1输入[3,32,321]返回值"321323"class Solution {public: string PrintMinNumber(vector<int> numbers) { string res; if(numbers.si
2021-02-18 16:44:45 111
原创 剑指offer之整数中1出现的次数
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。示例1输入13返回值6class Solution {public: int NumberOf1Between1AndN_Solution(int
2021-02-18 16:03:59 104
原创 剑指offer之连续子数组的最大和
题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).示例1输入[1,-2,3,10,-4,7,2,-5]返回值18说明输入的数组为{1,-2,3,10,—4,7,2,一5},和最大的子数组为{3,10,一4,7,2},因此输出为该子数组的和 18。 class Solution {public: int FindGreatestSumOfSubArray(vec
2021-02-17 20:09:49 119
rtsp协议网络抓包文件
2020-12-21
sip协议网络抓包文件
2020-12-21
DTMF抓包.rar
2020-12-05
octref.vetur-0.24.0.rar
2020-03-14
基于卡尔曼滤波的目标跟踪算法-官方demo
2016-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人