avi的index段

it2022-05-05  142

  假如要将avi文件分成头、中、尾的话,RRFT开始到movi段之间应该算是头,movi算是中间,index就算是尾部了。index其实就是movi中的内容的索引,作用是在拖动视频进度条时,能让解码器迅速定位到要找的视频帧。索引以“idx1”开头,后面跟着的是整个索引的大小,其基本结构是:

struct  AVI_index_entry{      unsigned  char  dwChunkId[ 4 ]; // 表征本数据块的四字符码      DWORD dwFlags; // 说明本数据块是不是关键帧、是不是‘rec’列表等信息      DWORD dwOffset; // 本数据块在文件中的偏移量      DWORD dwSize; // 本数据块的大小 };

大家看一个实例:

“idx1”就是索引的头

30 5b 00 00是索引的大小

大家看看实例的第二行,它们对应avi文件中的每一帧或者没一段音频:

30 30 64 63(“00dc”)是数据结构中的dwChunkId,当该段数据时音频时取(“01wb")

10 00 00 00 是dwFlags,关键帧取值为10 00 00 00,否则取值为00 00 00 00

04 00 00 00 是dwOffset;//本数据块在文件中的偏移量BF 0E 00 00 是dwSize,对应帧的大小

  在最初合成avi视频的时候,我是没有添加index段的,视频一样可以播放。可是当你要拖动视频时,视频不会立刻跳到你所要的位置,而是加快播放速度,直到到达目标位置。

  目前遇到一个问题:当我将索引加进去avi以后,播放器需要有一个缓冲的过程,有点像用迅雷下载电影,可是没等电影下完,改过后缀就去播放的状况。问题解决以后再来补充吧。

转载于:https://www.cnblogs.com/ManMonth/archive/2010/03/01/1675917.html


最新回复(0)