没有合适的资源?快使用搜索试试~ 我知道了~
FFMpeg对mpeg2ts流解码的流程分析
需积分: 50 18 下载量 96 浏览量
2013-12-03
22:52:56
上传
评论
收藏 29KB DOCX 举报
温馨提示
试读
23页
通过本文档的学习,让你在短时间内掌握ffmpeg中mpeg2-ts的解码流程!
资源推荐
资源详情
资源评论
FFMpeg
对
MPEG2 TS
流解码的流程分析 (2008-09-18 17:34)
分类: DVB
相关
对 流解码的流程分析
1.引子
广告都打出去了,不能没有反应现在写东西很少了,一是年纪大了,
好奇心少了
许多,;二则是这几天又犯了扁桃体炎,每天只要是快睡觉或刚起床,头晕脑
涨,不过功
课还是的做的,是吧
2.从简单说起
说道具体的音频或者视频格式,一上来就是理论,那是国内混资历的所谓教授
的做为,对
于我们,不合适,还是用自己的方式理解这些晦涩不已的理论吧。
其实 是一族协议,至少已经成为 标准的就有以下几部分
--:系统部分;
--:视频编码格式;
--:音频编码格式;
--:一致性测试;
--:软件部分;
--:数字存储媒体命令与控制;
--:高级音频编码;
--:系统解码实时接口;
我不是很想说实际的音视频编码格式,毕竟协议已经很清楚了,我主要想说说
这些部分怎
么组合起来在实际应用中工作的。
第一部分系统部分很重要,是构成以 为基础的应用的基础很绕口,
是吧,我简
单解释一下比如 实际上是以系统部分定义的 流为基础,加上版权管
理等其他技术构
成的。而我们的故事主角,则是另外一种流格式, 流,它在现阶段最大的应
用是在数字
电视节目的传输与存储上,因此,你可以理解 实际上是一种传输协议,与
实际传输的负
载关系不大,只是在 中传输了音频,视频或者其他数据。
先说一下为什么会有这两种格式的出现, 适用于没有损耗的环境下面存储,
而 则适用
于可能出现损耗或者错误的各种物理网络环境,比如你在公交上看到的电视,
很有可能就
是基于 的 !" 的应用
我们再来看 协议中的一些概念,为理解代码做好功课
#$%&'(%'&$
)*+* 上说“,#$%&'(-%'&$*-./.0(
12$$3*1&%*2'2%212#
*-3-3&##(%423%3%25&&3.*22'6*.212.'7
恩,很简单吧,就是编码器编出的一组数据,可能是音频的,视频的,或者其
他数据
说到着,其实可以对编码器的流程思考一下,无非是执行:采样,量化,编码
这 个步骤
中的编码而已有些设备可能会包含前面的采样和量化。关于视频编码的基本
理论,还是
请参考其它的资料。
&1+%*.#$%&'(%'&$
)*+* 上说“&##2)-&#$%&'(-%'&$%20.*6*..*%2&1+%-7
其实可以理解成,把一个源源不断的数据音频,视频或者其他流,打断成一
段一段,以
便处理
'&-2'%%'&$
'2'&$%'&$
这两个上面已经有所提及,后面会详细分析 8我对 格式兴趣不大
3.步入正题
才进入正题,恩,看来闲话太多了8直接看 2.
前面说过, 是一种传输协议,因此,对应到 $8可以认为他是一种封
装格式。因此
,对应的代码应该先去 #*0&652'$&% 里面找,很容易找到,就是 $%-1
还是逐步看过来
9#*0&652'$&%3%*#-1:
*%&6;2;*3%;/#, 2'$&%2%%<<*1;%'812-%14&'
</#&$8
======================, 3%2'$&%<5$%8
======================*%035;-*8
======================, 2'$&%&'&$%'-<&
>
===*%''8'20;-*?
===, '20&%&'20;.&%&8<.@A'20;.&%&?
===!(%2%%<0@BCDD?
===."E/#&$@FF?
===*5/#&$
=======."E/#&$@/#&$?
===."E035@BCDD?
===."E035;-*@G?
===
===
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHH
===【】这段代码其实是为了针对不需要 文件的容器 2'$&% 的探测,
其实就是使用
===, ;BD 标记的容器格式单独处理,现在只有使用了该标记的
$3' 很少,
===只有 *$&;.$3','%-;.$3',因此我们分析 时候可以不
考虑这部分
===HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
===*5I5$%>
=======<3--52'$&%*52/#1&02.<
=======5$%@&6;'20;*3%;52'$&%.8G?
===J
===<22%2/#*5%452'$&%.2-2%.*%KKK-1*/1
======4&1+..%24&.#L<
===*5I5$%MMI5$%"EN&-A, ;BD>
=======<*52/#...22%%'(%222<
=======
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHH
=======【】这个函数似乎很好理解,无非是带缓冲的 的封装,不过我们既
然到此了
=======,不妨跟踪下去,看看别人对带缓冲的 操作封装的实现
=======HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHH
=======*5''@3'#;52A08/#&$8CLD;LBDOPG>
===========2%25&*#?
=======J
=======*5035;-*EG>
===========3'#;-%035-*08035;-*?
=======J
=======52''20;-*@L!;!C;B?
'20;-*P@L!;!C;,KAAI5$%?'20;-*PP@>
===========*%-12'@'20;-*PL!;!C;,KQ
, L!;L;,KG?
===========<'&.'20.&%&<
===========."E035@&6;'&##21."E0358'20;-*R
, L!;,B;S?
===========
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHH
===========【】真正将文件读入到 . 的 03T' 的地方,实际上最终调用 D
'2%212#
===========的 /#;'&.8将内容读入到 . 的 035,具体代码如果有兴趣可以自
己跟踪
===========HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
===========."E035;-*@%;03T'08."E0358'20;-*?
===========$$-%."E035R."E035;-*8G8
剩余22页未读,继续阅读
资源评论
n-xibeifeng
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功