第三周:RIFFAVIWAV文件格式分析

Posted 顾月冷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三周:RIFFAVIWAV文件格式分析相关的知识,希望对你有一定的参考价值。

RIFF格式

资源互换文件格式(Resources interchange File Format),RIFF文件市微软提出的windows环境下大部分多媒体文件遵循的一种文件结构,如WAV文件、AVI文件等。

其采用小端模式。

RIFF的结构

RIFF采用了如同Windows文件系统的树状结构,其包含FOURCC、CHUNK、LIST。

FOURCC(Four Character Codes)

4字节32位的标识符,通常用来标识文件的数据格式。在音视频播放器中,通过FORRCC决定音视频如何解码。例如:视频:DIV3、DIV4、DIVX、H264;音频:WAV,MP3。对于不足4个字符的在最后补充空格。

CHUNK

chunk是RIFF文件的基本单元。

chunk结构:

struct chunk

u32 id;//块标志 4个ASCII字符,用来识别块中数据的“类型”,是RIFF或者LIST,或者DATA等。

u32 size;//块数据大小 即存储在Data中的数据长度,不包含ID和SIZE的大小。

u8 Data[size];//块数据, 若长度为奇数,补充空字节。

RIFF CHUNK 和LIST CHUNK

基于CHUNK基本结构上,RIFF、LIST、CHUNK类似windows的文档结构;

每一个RIFF文件首先存放是一个RIFF CHUNK,RIFF chunk中数据域的起始位置指向 FOURCC,表明音视频编解码格式。

后嵌套List CHUNK 或其他sub chunk。

List CHUNK的数据部分也由两部分组成, 包括LISTtyoe, 指明List块的类型。如avi文件中的列表“hdrl”、“movi”。

AVI格式

avi基于 RIFF;

首个RIFF CHUNK 指明 FOURCC 为 AVI;

后续包含多个 subchunk,如“hdrl”、“info"、“junk”、“movi”、“idxl”。

现以实例依次分析;

RIFF文件头:

 取前四个字节,为RIFF ID ,即52 49 46 46,对应ASCII码,为R I F F。取下四个字节:为50 48 5D 00,小端 为00 5D 48 50 ,为数据大小(6113360字节),下面4个字节为类型 41 56 49 20 对应ASCII码表为 A V I SP(空格);

hdrl列表

hdrl 头部

4C 49 53 54 即为 4字节的 LIST,00 00 22 CA 4字节大小为8906 字节。 68 64 72 6C 代表 list字型“hdrl”

 avih块

 

 61 76 69 68 即“avih”, 4字节大小 00 00 00 38 即56字节数据。 后续用来描述主信息头;如下图。

 strl LIST

 4C 49 53 54 为 LIST, 00 00 00 74 为大小 116 字节。 73 74 72 6C为  strl。

strh 块

 73 74 72 68 为strh 00 00 00 38 为56 字节。后续对应下表;描述流的头信息 为视频、H264格式编码。

strf块 

73 74 72 66 为strf ,该块用于描述流的具体信息。如果是视频流(vids,由strh块得知),用一个BitmapInfo结构体表示,如果是音频流(auds),用WaveFormatEx结构体表示。

 另一个strl 块, 描述音频流的相关信息,为(auds);

 JUNK块

填充数据,用于内部数据整齐。 

info LIST

用于描述编码该AVI的程序信息; 这里标识,编码器是LAVF58.35.100;

movi list

4C 49 53 54 LIST, 00 5A F8 78表示 5961848字节。为movi.

其中,子块种类有四种 

 --db:未压缩的视频帧
--dc:压缩的视频帧
--wb:音频数据
--pc:改用新的调色板

第一个子块为00dc,压缩视频帧。大小 00 02 F2 DF, 为193247字节。

找到下一个块,为音频流 01wb;大小 00 00 01 A1;为417字节。

查到下一个块,为视频流 00 dc ,大小为00 00 02 74 ,为628字节。

可见音视频交叉放置。

至于大小,查询多个音频流,多为00 00 01 A2,即418字节。

而,视频流大小无法确定。

idx1块

可选的,描述音视频数据的索引块信息

 在AVIMainHeader的dwFlags中指出是否包含索引块。有了索引块可以方便文件快进,如果没有索引块,在对AVI进行快进时需要计算位置,会很耗时。

WAV格式

Waveform Audio File Format。

保存PCM格式的原始音频数据,通常被称为无损音频。

现结合具体文件编码进行分析:

RIFF头文件:

52 49 46 46  ASCII码表,对应RIFF; 02 F1 9C 60,对应文件大小, 49388640字节。 57 41 56 45 对应 WAVE。

Format  Chunk

 66 6D 74 20 fmt" " ;00 00 00 10 块长度 16字节; 后续对应:

自定义附加信息块

4C 49 53 54 L I S T ; 00 00 00 34 52字节data长度;49 4E 46 4F INFO ;

包含 音频生成时间, 编码格式等。

DATA块

64 61 74 61  data; 02 F1 9C 00  49388544个字节数据;后续为记录的音频数据。

三周第五次课(2月9日)

技术分享图片
这是linux 所支持的文件系统格式
mke2fs 格式化 -t(指定密钥格式化成什么系统)-b (指令块大小)-m(指定分区预留的大小)-i(指定多少个字节对应多少个inode)
一个磁盘不分区也可以格式化
技术分享图片
blkid /dev/sdb 查看格式文件系统
格式化之后才能挂载文件系统
挂载命令mount技术分享图片
卸载 umount -l /MNT/
vi /etc/fstab 里面挂载了很多系统配置文件
手动增加swap空间技术分享图片
格式化swap= mkswap -f /tmp/newdisk
swapon 加载到现在的文件
swapoff 加文件卸载

以上是关于第三周:RIFFAVIWAV文件格式分析的主要内容,如果未能解决你的问题,请参考以下文章

三周第五次课(2月9日)

Linux20180416三周第五次课(4月10日)

三周第五次课) 4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap空间

三周第五次课

2019-2020学年 20191217《信息安全专业导论》第三周学习总结

三周第五次课(2月9日)