webrtc
文章平均质量分 66
怕什么真理无穷
怕什么真理无穷,进一寸有一寸的欢喜——胡适!
展开
-
centos下 搭建 AppRTC 服务
所有服务搭建在同一台centos服务器上(192.168.5.8),效果图:搭建AppRTC0、创建目录mkdir ~/webrtccd ~/webrtc安装需要的各种工具(除了apt之外还可以下载安装包或者源码自己编译安装):1、安装JDK#为了演示初始环境 已重装系统, 重装后先执行:yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel#查看安装路径dirname $(r...原创 2022-02-14 09:38:28 · 718 阅读 · 1 评论 -
c++ 11 lambda表达式
lambda表达式的语法形式:[ capture ] ( params ) opt -> ret { body; };[capture](parameters) mutable ->return-type{statement} 其中carpture是捕获列表,params是参数,opt是选项,ret则是返回值的类型,body则是函数的具体实现。 1.捕获列表描述了lambda表达式可以访问上下文中的哪些变量。[] :表示不捕获任何变...原创 2022-02-13 15:02:09 · 73 阅读 · 0 评论 -
webrtc 博客参考:
WebRTC 1.0: Real-Time Communication Between Browsers原创 2022-02-13 14:59:10 · 215 阅读 · 0 评论 -
webrtc 中的scoped_refptr
C++中在堆中申请的内存都需要程序员自己手动删除,这是C++容易造成内存泄漏的根本原因。使用过Java的朋友都清楚,Java有完善的内存回收机制,无需程序员调用释放内存的操作。C++里是否能够实现类似Java的自动回收内存的机制呢?答案是肯定的,而Webrtc中的scoped_refptr就是实现类似的功能。首先我们从这个类的名字入手去理解它的含义。名字由三个单词组成,分别为scope,ref,ptr。先看ptr,C++程序员都知道这是pointer指...原创 2022-02-13 14:55:43 · 288 阅读 · 0 评论 -
libwebsocket 的编译
原创 2022-02-13 11:30:38 · 885 阅读 · 0 评论 -
zlib 库的编译
1)用管理员方式打开zlib 目录,执行bld_ml64.bat 。2) 执行如下命令生成库。nmake -f win64/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"https://blog.csdn.net/fm0517/article/details/91805489zlib1.2.11的VS2019动态库静态库...原创 2022-02-11 17:50:26 · 650 阅读 · 0 评论 -
uwebsoket的编译
1)添加OpenSSL libuv 的头文件依赖性 ,下载openssl的版本(win64 openssl v1.1.1l) 2)添加库的依赖项目3)输入为libuv.lib psapi.lib userenv.lib iphlpapi.lib capi.lib dasync.lib li apps.lib libcrypto.liblibcrypto_static.lib libssl.lib libssl_static.lib libtestutil.lib o...原创 2022-02-11 16:28:22 · 313 阅读 · 0 评论 -
WebRTC:P2P 连接过程完全解析
宏观流程:设置 local sdp; 创建一个 transport 对象(启用了 bundle); 收集 local candidates; 设置 remote sdp,添加 remote candidates; ICE 连通性检查,建立 P2P 连接; P2P 数据传输; P2P 关键类:AllocationSequence: 负责对单个网络设备(Network 对象)分配 port,分阶段进行; 各种 port 类:代表的是一种通讯机制的本地实例,它可以和远端的类似实例一起实现..原创 2022-02-10 08:51:54 · 3836 阅读 · 0 评论 -
webrtc代码走读九(接收测远端SSRC配置)
一、函数调用关系Thread::PreRun-->ProcessMessages-->Dispatch-->Thread::QueuedTaskHandler::OnMessage-->BaseChannel::SetRemoteContent-->VoiceChannel::SetRemoteContent_w1)ProcessMessages2)Dispatch3)Thread::QueuedTaskHandler::OnMe..原创 2022-02-03 11:03:14 · 278 阅读 · 0 评论 -
webrtc 代码走读八(视频打包)
一、编码到发包函数调用图二、编码函数代码走读 encoded_image_缓存的是编码后的数据。frag_header是NALS组信息。encoded_image_缓存数据格式为:4个字节起始码+NALHead+date+4个字节起始码+NALHead+date。RTPFragmentationHeader* frag_header参数fragmentationOffset和fragmentationLength含义如下:...原创 2022-02-02 11:15:38 · 1657 阅读 · 0 评论 -
webrtc 代码走读七(FEC8627)
一、概述webrtcwebrtcwebrtcwebrtc发送FlexFEC报文的时候,是同时发送两股流:PT值为102的正常媒体报文。PT值为106的flexfec冗余报文。这两股流使用的是不同的SSRC原创 2022-02-02 10:08:00 · 2797 阅读 · 0 评论 -
webrtc 代码走读六
一、呼叫流程图webrtc的ICE符合rfc5245标准协议。该协议的链接为:https://tools.ietf.org/html/rfc5245每个终端都有一系列传输地址(包括传输协议、IP地址和端口)的候选,可以用来和其他端点进行通信。其中可能包括:1)直接和网络接口联系的传输地址(host address)2)经过NAT转换的传输地址,即反射地址(server reflective address)...原创 2022-02-01 16:01:06 · 1209 阅读 · 0 评论 -
webrtc代码走读五(JitterBuffer)
一、 什么是JitterBufferJitter Buffer也叫做抖动缓冲区,它是实时音视频里面的一个重要模块,它对数据包丢失、乱序、延迟到达等情况进行处理,平滑的向解码模块输出数据包/帧,抵抗各种弱网情况对播放/渲染造成的影响,降低卡顿,提高用户的观看体验。二、JitterBuffer在音视频系统中的位置JitterBuffer在实时音视频系统中的位置如下所示:三、 视频JitterBuffer的工作原理1. JitterBuffer的核心思想...原创 2022-01-31 08:29:25 · 3072 阅读 · 0 评论 -
webrtc代码走读四(rtp包格式)
一、rtp包头格式V:版本号,必须为2P:填充位X:扩展位,标志是否存在扩展CC:CSRC个数M:Mark标志位,标志是否是一帧的结束,音频帧几乎每个包都是一个完整的帧,所以M一般情况都等于1,视频包因为一帧比较大,会被分为几个包发送,最后一个包标志需要Mark一下。sequence number:包序号,发送端指定一个起始序号(如果不指定则随机一个),然后每个包的序号依次递增;如果存在RTX,重发是此序号是rtx的序号。Timestamp:时间戳,如果一个视频帧被分为几个包原创 2022-01-30 10:17:48 · 421 阅读 · 0 评论 -
webrtc 代码走读三(h264 rtp打包)
基本概念 :H264 编解码器: 编解码器规范在概念上区分视频编码层(VCL)和网络抽象层(NAL)。VCL编码器输出切片:一点包含整数个宏块数据的字符串宏块和切片头信息。NAL编码器将VCL编码器的切片封装成网络抽象层单元(NAL),适用于通过分组网络或者面向分组的多路复用环境。F: 1 bit forbidden_zero_bit. The H.264 specification declares a value of 1 as a s...原创 2022-01-29 15:56:58 · 590 阅读 · 0 评论 -
webrtc代码走读二(视频数据处理流程)
一、概述二:源码分解原创 2022-01-26 22:41:17 · 940 阅读 · 0 评论 -
webrtc SDP 交互过程
原创 2022-01-19 17:25:26 · 374 阅读 · 0 评论