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

  • 相关阅读:
    微信小程序获取用户绑定手机号码完整版
    SQL读取当天的数据
    Android 百度离线地图(由apk文件转入手机内部存储)
    解决windows家庭版系统不支持远程桌面功能问题
    微信小程序携参跳转页面
    微信小程序 websocket 封装
    微信小程序HTTP请求封装
    Ionic项目打包Android在9版本以上不能进行HTTP通信问题
    Ionic 使用 MQTT
    Ionic HTTP 请求
  • 原文地址:https://www.cnblogs.com/ManMonth/p/1675917.html
Copyright © 2011-2022 走看看