• avi的index段


      假如要将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以后,播放器需要有一个缓冲的过程,有点像用迅雷下载电影,可是没等电影下完,改过后缀就去播放的状况。问题解决以后再来补充吧。

  • 相关阅读:
    Hibernate 与 mybatis 区别
    Struts2 核心流程
    java 面试 -- 4
    无线电日记 2
    ham 无线电笔记
    Our Deepest Fear
    随笔
    GSM学习笔记
    网络时代的悲哀:微软百科全书
    [转载]arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
  • 原文地址:https://www.cnblogs.com/ManMonth/p/1675917.html
Copyright © 2020-2023  润新知