AVI转YUV的详细过程以及注意事项

本文详细介绍了AVI文件的结构,包括RIFF、LIST块及其子块,如avih、strh、strf等,并强调了avih和strh字段的重要性。通过分析avi文件的二进制内容,揭示了如何从AVI转换到YUV格式,同时提到了索引块(idx1)和不同类型的流数据,如video(vids)和audio(auds)。
摘要由CSDN通过智能技术生成

先放上这张图片,是让大家有一个直观的感受,avi就像一个容器,只要按照这个框架依次读取数据,就能很好的解析出数据来。鉴于本人习惯,我喜欢看图说话,所以接来下会放上很多avi格式的二进制图片,以便更好详细说明读取过程的信息。


                                                 (图1)

如图(1)所示,这是avi的二进制图,AVI文件利用AVI RIFF格式(RIFF(Resource Interchange FileFormat,资源互换文件格式)是微软公司定义的一种用于管理windows环境中多媒体数据的文件格式,)

构造RIFF文件的基本单元叫做数据块(Chunk),每个数据块包含3个部分,

  1、4字节的数据块标记(或者叫做数据块的ID)

  2、数据块的大小

  3、数据

整个RIFF文件可以看成一个数据块,其数据块ID为RIFF,称为RIFF块。一个RIFF文件中只允许存在一个RIFF块。RIFF块中包含一系列的子块,其中有一种字块的ID为"LIST",称为LIST,LIST块中可以再包含一系列的子块,但除了LIST块外的其他所有的子块都不能再包含子块。

  RIFF和LIST块分别比普通的数据块多一个被称为形式类型(Form Type)和列表类型(List Type)的数据域,其组成如下:

  1、4字节的数据块标记(Chunk ID)

  2、数据块的大小

  3、4字节的形式类型或者列表类型

  4、数据

以上说了这么多,可能有些新手还是不太了解,举例说明之:


图(2) 此处蓝线部分为整个avi大小。注

此处蓝线部分为整个avi大小。注

意:文件是从右往左读取,故而是(08 99 2B B6)=144255926字节~而我打开文件实际字节是144,255,934,这是因为前面的"RIFF"和本身这四个表示大小的数据字节没有算进去,故144255926+8=144 255 934。

紧接着后面四个字节表示AVI说明这是一个AVI格式的视频。


所有的AVI文件必须包含两个LIST块。这些块定义流格式和stream数据。AVI文件也可能包含一个索引块,此块定义文件中的数据块位置。包含上述组件的AVI文件的格式为:

RIFF ('AVI '

     LIST ('hdrl'

          )

     LIST ('movi'

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值