一、webrtc-sfu - 推流篇 - 概览 学习和总结下webrtc推流的过程,仅仅是数据协议层的流程,不包括信令协议(这个也没有统一的规范)。服务器使用的是janus-gateway推流篇一、抓包看总流程大概流程如下:通过STUN协议获取对方的公网IP和端口通过DTLS协议进行握手,设置加密信息等通过RTP和RTCP协议进行数据的传输和数据状态的上报和获取。二、简单了解协议2.1 STUN协议协议标准 - RFC5389参考文档-12.1.1 为什么需要STUN协议?首先需要了解下STUN协议能..
RFC-6184 H264-RTP打包 详细的RFC见RFC-618简介RTP是流协议,所以传输的H264一定是Nal类型的H264数据,Nal的头中有三个字段,分辨是forbidden_zero, nal_ref, nal_unit_type,内涵不再详细说明。RTP头格式中与H264相关的字段如下:M (Mark), 表示当前包是H264 Nal的最后一个包。PT(Payload Type),对于H264该字段应该是通过SDP或则其他信令映射的标示。Sequence Number, 序列号,单调递增。Timestamp 时.
RFC-5285-RTP-Header-Extensions 简介在RTC3550中提供了一种可扩展RTP头的能力。定义如下图,现有的报头扩展方法允许每个RTP分组最多有一个扩展,由16位标识符和16位长度字段标识,该字段以32位指定报头扩展的长度。这种机制有两个弊端:第一在一个RTP包中只能提供一个扩展头,第二规范并没有给出如何分配16位头扩展标识符以避免冲突的指导。本规范通过定义一种向后兼容和可扩展的方法来在单个RTP分组中携带多个报头扩展元素,从而消除了第一个缺点。通过定义这些扩展元素来消除第二个缺点,这些扩展元素使用URLs命名,在IETF中定义一个
RTP控制协议-RTCP RTCP包组成数据包格式时序规则参与者数据库包格式规范定义了统一的基本包格式,如下:V 版本号,默认为2P 填充,加密使用,类似于RTP的方式,最后一个字节为填充总数IC,item count条目数量,最多为31个,注意MTU的限制,如果超过31个条目,则需要对内容进行分包。PT,Packet Type,包类型,看下面的定义Length, 长度五种RTCP包类型接收方报告(RR)发送方报告(SR)源描述(SDES)成员管理(BYE)应用程序定义(APP)P
H264 - SPS PPS H264SPS 序列参数集seq_parameter_set_data() //C Descriptor{ profile_idc; //0 u(8) constraint_set0_flag; //0 u(1) constraint_set1_flag; //0 u(1) constraint_set2_flag; //0 u(1) constraint_set3_flag; //0 u(1) constraint_set4_flag
FLV封装结构 文章目录FLV结构FLV headerFLV TagAudio Tag HeaderVideo Tag HeaderFLV File BodyFLV结构FLV结构video tag - avc video packet1.1 熵1.2 熵和熵编码1.3 熵编码分类2. 指数哥伦布编码(编码过程)2.1 0阶指数哥伦布编码2.2 K阶指数哥伦布编码3. 指数哥伦布编码(解码过程)3.1 ue(v)H264语法3.2 se(v)3.3 me(v)3.4 te(v)3.4.1 te(v)编码过程3.4.2 te(v)解码过程4. 总结因为指数哥伦布编码(Exponential-Golomb)属于熵编码(Entropy encoding),所以我们先大致介绍一下熵编码,然
Annex-B和AVCC 格式Annex-BAVCC(H.264) 和 HVCCAnnex-BAnnex-B格式 也叫MPEG-2 transport stream format格式(ts格式), ElementaryStream格式。AVCC(H.264)AVCC格式 也叫AVC1格式,MPEG-4格式,字节对齐,因此也叫Byte-Stream Format。用于mp4/flv/mkv, VideoToolbox。结构结构主要有两点区别:SPS和PPS的组织格式数据分隔方式不同Annex-B -结构
AAC 数据格式 AACAAC 数据格式1 ADIF格式1.1 序列语法1.1.1 adif_header2 ADTS格式2.1 adts_sequence2.1.1 adts_frame2.1.1.1 adts_fixed_headerAAC 数据格式AAC是常见的编码格式,编码后的数据封装格式分为两种:ADIF(Audio Data Interchange Format) 和 ADTS(Audio Data Transport Stream), 常见的主要是ADTS封装。1 ADIF格式1.1 序列语法ad
3.1图像的空间域统计特性 3.1图像的空间域统计特性是什么?图像信号(亮度 色度)本身,或则对他们进行某种方式的处理之后的输出值的随机统计特性。如 一行的相邻像素,一列的相邻像素,相邻行对应的像素之间,视频帧间对应的位置往往具有很强的相关性;相关函数直方图如RGB直方图的,行坐标一般位0-255,因为颜色就这么大;纵轴位每个行坐标对应的像素的个数,直观,好看...
2.1 墒编码基本原理 目录墒编码信息量的概念举个例子墒编码概念墒编码信息量的概念信息量:表示该符号所需要的位数考虑用0和1组成的二进制数码为含有N个符号的某条消息进行编码假设符号 aj在整条消息中重复出现的概率为 Pj ,则该符号的信息量定义为:En = -log2(Pj)举个例子假如信源字符串:aabbaccbaaa,b,c,出现的概率分别为:0.5;0.3;0.2,他们的信息量分别为:Ea=-log2(0.5) = 1Eb=-log2(0.3) = 1.737Ec=-log2(0.2) = 2.
nginx学习 文章目录nginx热部署nginx热部署备份旧进程文件,替换成新进程文件;启动新版本kill -USR2 pid停止老版本kill -WINCH pid如果新版本有问题,reload可以直接回退到老版本./sbin/nginx -s reload...
FFmpeg转码一帧(时间戳) 写在前面时间戳 时间基 帧 包 I B P SPS PPS 场 封装格式 编码格式 音频 视频如果上面的这些关键字有些不了解的需要先查资料弄懂ffmpeg转码一帧转码过程此文档中我会主要关注每一步的时间戳是如何处理的,这也是记录这篇文章的原因。读取一帧注册,打开输入,扫描输入信息(av_regigster_all(),avforamt_open_input(),avform...
数字视频简介 数字视频简介基本术语颜色编码方法深度(bit depth)分辨率宽高比帧率码率码率控制方法(VBR/CBR/ABR)隔行/逐行扫描隔行扫描逐行扫描查看视频信息基本术语颜色编码方法一张图片可以被想象成2D的矩阵。如果我们考虑颜色,我们可以顺着这个思路一张图片想象成3D矩阵,其中另外一个D用于存储颜色数据。如果我们使用原色(红,黄,蓝三色)代表这些颜色,我们可以定义三个平面:第一个代表红色,...
ffmpeg 编译 windows编译编译环境准备登陆 http://msys2.github.io/ 或 https://github.com/msys2 下载 msys2安装程序 安装到C/D 盘的根目录下面安装一些必要的库和软件 pacman -S git pacman -S yasmpacman -S makepacman -S mingw-w64-x86_64-gcc 编译下载ffmpeg源
ffmpeg.c源码阅读 入口函数mainint main(int argc, char **argv){ int i, ret; int64_t ti; init_dynload(); register_exit(ffmpeg_cleanup); setvbuf(stderr,NULL,_IONBF,0); /* win32 runtime needs this */ av_log