
音视频处理
前进的蜗牛啊
一个程序员,现在依然在路上~
欢迎讨论技术问题,及对博客文章提意见
展开
-
RTX包webrtc处理
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...原创 2019-10-22 10:57:22 · 1008 阅读 · 0 评论 -
mediaSoup源码分析-ICE流程
其实很简单,直接放源码吧inline void WebRtcTransport::OnStunDataReceived( RTC::TransportTuple* tuple, const uint8_t* data, size_t len){ MS_TRACE(); RTC::StunPacket* packet = RTC::StunPacket::Parse(dat...原创 2019-10-16 15:18:06 · 1735 阅读 · 0 评论 -
mediaSoup源码分析-dtls操作
dtls主要用来交换srtp的#在ICE完成后,开始dtls过程 void WebRtcTransport::MayRunDtlsTransport() { MS_TRACE(); // Do nothing if we have the same local DTLS role as the DTLS transport. // NOTE: local role in...原创 2019-10-16 12:38:48 · 1912 阅读 · 0 评论 -
mediaSoup 源码分析-Stun packet处理
#对着协议看代码就已经很清晰了。#stun packet 包头// 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// +-+-+-+-+-+-+-+-+-+-+...原创 2019-10-16 10:01:20 · 990 阅读 · 0 评论 -
rtp 头解析
version (V): 2 bits 标明RTP版本号。协议初始版本为0,RFC3550中规定的版本号为2。 padding (P): 1 bit 如果该位被设置,则在该packet末尾包含了额外的附加信息,附加信息的最后一个字节表示额外附加信息的长度(包含该字节本身)。该字段之所以存在是因为一些加密机制需要固定长度的数据块,或者为了在一个底层协议数据单元中传转载 2013-06-06 19:45:51 · 2796 阅读 · 0 评论 -
aac格式分析
转自 http://www.cnblogs.com/caosiyang/archive/2012/07/16/2594029.htmlADTS帧首部结构:序号域长度(bits)说明1Syncword12all bits must be 12MPEG version10 for MPEG-4, 1 for MPEG-转载 2016-01-06 23:30:03 · 5310 阅读 · 0 评论 -
ubuntu 搭建darwin streaming server6.03(成功测试通过)
ubuntu12.04上搭建darwin streaming server6.03个人建议:使用DarwinStreamingSrvr5.5.5,因为DarwinStreamingSrvr6.0.3安装过程中有很多问题需要解决!而且安装只需执行./Install就可以!1:下载darwin源代码DarwinStreamingSrvr6.0.3-Source.tar,补丁patch ds转载 2015-12-18 23:27:06 · 2056 阅读 · 0 评论 -
h264封装ts文件资料相关
转自:http://www.cnblogs.com/wangqiguo/archive/2013/03/29/2987949.html感觉这个说的还比较靠谱点。网上好多人都扯淡。代码可以参考ffmpeg, mpegtsenc.c由于要在crtmpserver中实现Http Live Streaming ,本人花了接近3个星期的时间,研究将H264与AAC打包为TS流并能转载 2015-12-09 17:40:35 · 20303 阅读 · 0 评论 -
从flv格式中分离出裸h264
自己测试可以用,原文链接http://blog.163.com/zhujiatc@126/blog/static/18346382013413112230525/#include #include #include #include using namespace std;#define HTON16(x) ((x>>8&0xff)|(x<<8&0xff00))#defi转载 2015-11-16 19:26:34 · 4037 阅读 · 0 评论 -
h264 NAL头解析
NAL全称Network Abstract Layer,即网络抽象层。在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。NAL单元是NAL的基本语法结构,它包含一个字节的头信息和一系列来自VCL的称为原始字节序列载荷(R转载 2013-06-06 20:43:21 · 35299 阅读 · 5 评论 -
rtp over tcp
转自:http://blog.youkuaiyun.com/evsqiezi/article/details/22881151Normally, RTSP provide streaming over UDP. By nature, UDP is a better choice as it provides robust streaming capability for media. However,转载 2016-03-13 12:17:24 · 1891 阅读 · 1 评论 -
darwin Stream Server源码分析
摘要 所谓的流式媒体简单的讲就是指人们通过网络实时的收看多媒体信息:如音频流、视频流等。与流式媒体对应的传统工作方式是下载+播放模式,即用户首先下载多媒体文件,然后再在本地播放,这种方法的一个主要缺点是启动延迟较大,例如一个30分钟长的MPEG-I文件(相当于VCD质量),即使使用1.5Mbps的速率下载,也需要半个小时才能完成,这样一个漫长的等待时间实在是无法忍受。在窄带网络环境中,几乎所有基转载 2016-04-08 18:47:26 · 1397 阅读 · 0 评论 -
ts文件格式解析
TS格式解析by ahuner1.TS格式介绍 TS:全称为MPEG2-TS。TS即"Transport Stream"的缩写。它是分包发送的,每一个包长为188字节(还有192和204个字节的包)。包的结构为,包头为4个字节(第一个字节为0x47),负载为184个字节。在TS流里可以填入很多类型的数据,如视频、音频、自定义信息等。MPEG2-TS主要应用于实时传送的节转载 2015-01-25 17:13:53 · 35422 阅读 · 4 评论 -
ffmpeg avcodec_open2 内存泄漏问题
发现ffmpeg一个问题,欢迎大家讨论指正,也许改的不是很优美。问题描述:==4830== 40 bytes in 1 blocks are still reachable in loss record 1 of 1==4830== at 0x4C2FFC6: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.原创 2017-12-21 15:54:59 · 4043 阅读 · 1 评论 -
opus rtp format 学习比较
#opus rtp timestamp不管编码时间是多少采样率。opus rtp时间戳统一 是4800增长。Opus supports 5 different audio bandwidths, which can be adjusted during a call. The RTP timestamp is incremented with a 48000 Hz cloc...翻译 2019-10-06 16:10:56 · 1651 阅读 · 0 评论 -
janus 在mac 上安装
参考:https://blog.youkuaiyun.com/glw0223/article/details/86736505解决如下:./configure --prefix=/usr/local/janus --enable-post-processing PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig:/usr/local/opt/...转载 2019-10-07 19:20:32 · 846 阅读 · 0 评论 -
rtcp 关键帧请求总结
第一类:关键帧请求主要包括SLI/PLI/FIR,作用是在关键帧丢失无法解码时,请求发送方重新生成并发送一个关键帧。这本质是一种重传,但是跟传输层的重传的区别是,它重传是最新生成的帧。PLI 是Picture Loss Indication,SLI 是Slice Loss Indication。发送方接收到接收方反馈的PLI或SLI需要重新让编码器生成关键帧并发送给接收端。...转载 2019-10-10 10:23:06 · 4927 阅读 · 1 评论 -
ffmpeg 转换其他格式到YUV420P
代码参考了网上的文章1.申请bufferAVFrame *pFrame,*pFrameYUV;pFrame=avcodec_alloc_frame();pFrameYUV=avcodec_alloc_frame();uint8_t *out_buffer;out_buffer=new uint8_t[avpicture_get_size(PIX_FMT_RGB24, pCodec转载 2015-10-26 18:37:42 · 5398 阅读 · 0 评论 -
FLV格式解析—写的很有条理,看懂了
转自:http://wuyuans.com/2012/08/flv-format/最近要用到flv,整理了一些flv格式的资料,供参考。 flv文件主要由两部分组成:header和body。1.headerheader部分记录了flv的类型、版本等信息,是flv的开头,一般都差不多,占9bytes。具体格式如下:文件类型3 bytes转载 2015-02-11 11:14:45 · 4410 阅读 · 0 评论 -
rtmplib rtmp协议过程分析
转自:http://chenzhenianqing.cn/articles/1009.html写的很好,收藏如下,向作者致敬!没事碰到了librtmp库,这个库是ffmpeg的依赖库,用来接收,发布RTMP协议格式的数据。代码在这里:git clone git://git.ffmpeg.org/rtmpdump先看一段通过librtmp.so库下载RTMP源发布的数转载 2015-01-17 22:08:50 · 15802 阅读 · 1 评论 -
I帧和IDR帧的区别
from http://blog.chinaunix.net/uid-12782-id-2915876.htmlI帧和IDR帧的区别:1. 在 H.264 中 I 帧并不具有随机访问的能力,这个功能由 IDR 承担。以前的标准中由 I 帧承担。2. IDR 会导致 DPB (参考帧列表——这是关键所在)清空,而 I 不会。3. I和IDR帧其实都是I帧,都是使用帧转载 2015-01-25 14:08:59 · 1740 阅读 · 1 评论 -
nginx配置rtmp流媒体服务器
转自:http://www.cnblogs.com/wainiwann/p/3866254.html感谢作者没有让我下午浪费时间,成功搭建起rtmp环境。前提:在linux下某个目录中新建一个nginx目录。然后进入该目录去下载搭建环境所需要的一些资源包。此处在 /root/ 目录下新建一个nginx目录即:/root/nginx/====转载 2015-01-17 21:35:27 · 2198 阅读 · 0 评论 -
nginx搭建hls服务流程
这里只作为记录nginx搭建过程参考nginx搭建rtmp服务流程所不同的是:1. m3u8生成器从https://github.com/johnf/m3u8-segmenter 下载m3u8-segmenter下载后编译,make && make install;命令如下:./m3u8_segmenter -i test.ts -n 30-p原创 2015-01-24 16:13:26 · 1449 阅读 · 0 评论 -
m3u8文件说明
from:http://blog.sina.com.cn/s/blog_6cf7acdf0102v0xv.html1. M3U8文件概念M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。2. M3U8文件举例例如使用云图TV点播直播节转载 2015-01-24 15:14:06 · 14941 阅读 · 0 评论 -
avi文件格式解析
结合avi视频文件头十六进制码分析AVI格式 这段时间要搞视频合成方面的东西,因此打算先弄明白avi视频的格式,介绍这方面内容的东西google一下一大堆,可是很悲剧,现在的人基本上都喜欢copy,内容基本来源于同一篇,对我没什么实质性的帮助。本来是希望通过看看一些avi合成的源码来分析avi的结构的,可是windows下的程序基本是调用directshow完成的,格式方法都封装好了。转载 2014-11-01 11:07:41 · 4790 阅读 · 0 评论 -
rtp对h264 nalu fu-a的处理
1.FU-A的分片格式数据比较大的H264视频包,被RTP分片发送。12字节的RTP头后面跟随的就是FU-A分片:FU indicator有以下格式+---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+ FU指示字节的类型域 Type=28表示原创 2015-07-26 13:32:01 · 2540 阅读 · 0 评论 -
详解YUV
YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。 YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chro转载 2015-08-25 09:26:40 · 1425 阅读 · 0 评论 -
音频概念(收藏)
音频里的两个很重要的概念是:采样频率和采样深度(又有人翻译为:采样位深、采样大小)注:很多时候不同的人对上面两个概念的取名和翻译不同。所以在看别人的文章时候,出现了一个新名词,实际又给取了个新名字。1.采样频率 采样率表示了每秒对原始信号采样的次数,我们常见到的音频文件采样率多为44.1KHz,这意味着什么呢?假设我们有2段正弦波信号,分别为20Hz和20KHz,长度均为一转载 2014-07-20 19:20:49 · 709 阅读 · 0 评论 -
ffmpeg 的时间单位
转自:http://www.cnblogs.com/yinxiangpei/articles/3892982.html视频的显示和存放原理对于一个电影,帧是这样来显示的:I B B P。现在我们需要在显示B帧之前知道P帧中的信息。因此,帧可能会按照这样的方式来存储:IPBB。这就是为什么我们会有一个解码时间戳和一个显示时间戳的原因。解码时间戳告诉我们什么时候需要解码,显示时间戳告诉我们转载 2015-09-25 15:27:36 · 775 阅读 · 0 评论 -
crtmpserver基本架构(协议和服务对应关系)
下面是一段日志打印+-----------------------------------------------------------------------------+ | Services| +---+---------------+--原创 2015-09-28 11:11:56 · 1696 阅读 · 0 评论 -
crtmpserver 启动初始化(写的比较详细)
Hank (http://blog.chinaunix.net/uid/26000296.html)版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明。一、简介crtmpserver(C++ RTMP Server)是高性能的流媒体服务器,支持以下协议(直播或录制): . 支持Flash(RTMP,RTMPE,RTMPS,RTMPS,RTMPT,RTMPTE)转载 2015-09-28 10:58:33 · 2639 阅读 · 0 评论 -
rtmp协议中streamid和chunk关系
Rtmp中,一个Message通常是分割成多个Chunk进行传输的.每个Chunk通常包含有1~12个字节的头部(该部分与完整的协议不是十分符合).因为Rtmp是基于TCP协议的,所以在Rtmp传输过程中, Chunk头部会根据实际情况使用简化的头部(12字节的头部是完整的头部,8/4/1字节的头部是根据实际情况简化的).一. Chunk头部的简化规则 说明:以上转载 2015-03-02 14:11:44 · 5166 阅读 · 0 评论 -
YUV420P格式图像处理分割,复制,合并
首先说明下yuv420的格式下面选自http://blog.youkuaiyun.com/jefry_xdz/article/details/7931018提示: 读下面的文字时,希望大家结合图片看,这样更易理解 在YUV420中,一个像素点对应一个Y,一个2X2的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。YUV420sp原创 2015-10-15 16:08:36 · 9076 阅读 · 4 评论 -
H264相关
一 H.264句法1.1元素分层结构H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素。句法元素被组织成有层次的结构,分别描述各个层次的信息。 图1H.264分层结构由五层组成,分别是序列参数集、图像参数集、片(Slice)、和宏块和子块。参数集是一个独立的数据单位,不依赖于参数集外的其它句法元素。图2描述了参数集与参数集外的句法元素之间的关系。转载 2015-10-10 10:24:44 · 778 阅读 · 0 评论 -
crtmpserver启动和vlc播放rtmp流程
这里是一个记录1.启动crtmpserver./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua2.用vlc播放rtmp://192.168.0.99/flvplayback/flv:football.flv3.crtmpserver 日志记录如下CMakeLists.txt precompiled.gc原创 2015-02-16 21:52:25 · 8987 阅读 · 3 评论