FLV帧全面分析。研究心得。

做视频会议,用RTMP协议,就要把视频流封装成flv包。

最近几星期一直在纠结怎么封装,终于让我找到规律了。

首先下载一个flvparse软件。来分析flv的帧数据。打开软件,点浏览选择路径打开flv文件可以得到下图:

上图打开的是一个好的flv文件,就是封包格式是正确的,我们可以来分析和观察一下。

File Header和 MedadataTag是rtmp协议自动添加上的数据,所以不用我们来分析。(当然如果你又需求要自己编写rtmpclient的话这些数据也需要你自己添加,目前我使用的是java版的rtmpclient。个人感觉太臃肿了,尤其是跑在android平台上,所以后期我可能会修改一下这个rtmpclient。)

下面回归正题,我们从第一帧开始分析。上图青绿色部分就是第一帧的数据了。前面10个数据也是在rtmpclient中添加的。09 00 00 2C就是视频数据相关。00 00 00 00是时间戳。在后面2个00 00我目前还没有研究。17 00 00 00 00就是帧类型。这个类型是第一帧的代表,也就是在这帧里面插入sps pps等信息。

紧接着在帧类型到最后一位中的数据就是avc中的数据了,就是视频的一些参数。具体内容可以参考这个帖子http://blog.csdn.net/peijiangping1989/article/details/6934312

只有第一帧才是17 00 00 00 00哦。在数据后面跟着4位数据为数据的长度。00 00 00 37也就是这个第一帧的长度了。

下面我们点击第2帧。如图:

可以看到前面10位数据大致相同。同时时间戳也发生了变化。这个先不管。帧类型大家可以看到第2帧的是 27 01 00 00 00。这说明这帧是p帧。就是不是关键帧。

但是在后面不是紧跟着数据了00 00 00 DA代表的是后面数据的长度,不是整个帧的长度哦是从DA 以后数据,也就是裸数据的长度,在41到F0就是裸数据了。

这里我来说下怎么分析是不是关键帧其实很简单只要裸数据第一个数据是41就不是关键帧,是65才是关键帧。关键帧的数据类型是 17 01 00 00 00.

同样在裸数据后接着4为帧长度,就只要一直下去,当遇到是65就插入17 01 00 00 00为关键帧,41就27为P帧。只要就完成了flv文件的格式。和封包。

$(document).ready(function(){dp.SyntaxHighlighter.HighlightAll('code');});
原文链接: http://blog.csdn.net/peijiangping1989/article/details/6999224

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

FLV视频封装格式详解

_Overview_FlashVideo(简称FLV),是一种流行的网络格式。目前国内外大部分视频分享网站都是采用的这种格式._FileStructure_从整个文件上开看,FLV是由TheFLVheader 和 TheFLVFile

LiveVideoStack线上分享第三季(十四):FLV封装格式介绍及解析

随着流媒体的高速发展,FLV成为了最主流的视频流传输封装格式,但是作为占市场较大份额的Web端的实际应用中,各大浏览器却没有对FLV解码做完善的支持。8月17日20:00,LiveVideoStack线上分享第三季,第十四期,高顿网校平台开发部流媒体工程师戴兵将对比FLV实际文件带大家详细了解一下它的具体格式标准。!(h

FLV文件格式解析

1.FLV文件整体结构FLV文件由FLVheader和FLVbody组成,FLVbody由一系列的FLVtags组成,如下图所示!(https://oscimg.oschina.net/oscnet/f71941d1979461f6785938802b6fb25f4ad.jpg)tag又可以分成三类:audio