文章目录

  • 1.AVI简介(本节为抄录)
  • 2.AVI格式示意图(本节为抄录)
  • 3.示意图 VS 数据结构 VS 具体数据
    • 3.1 RIFF文件头【最开始12个字节】
    • 3.2 hdrl信息【第13-24字节】
    • 3.3 avih信息【第25-88字节】
    • 3.4 strl块【】
      • 3.4.1 strh块
      • 3.4.2 strf块
  • 4.使用ffmpeg软件将其他格式的视频转为mjpeg编码的AVI文件
  • 5.使用《格式工厂》将其他格式的视频转为mjpeg编码的AVI文件
    • 5.1打开软件,进入视频转换界面
    • 5.2进入输出配置界面
    • 5.3配置重点
  • 重点参考文章:

最近想了解一下avi视频格式,找了一些文章,在阅读过程做一些笔记,以防忘记。
在github有一个开源的 avilib库(C语言),可以方便地实现读写avi文件: https://github.com/woshinieao/avilib

1.AVI简介(本节为抄录)

AVI(Audio Video Interleaved的缩写) 是一种RIFF文件格式,多用于音视频捕捉、编辑、回放等应用程序中。通常情况下,一个AVI文件可以包含多个不同类型的媒体流(典型的情况下有一个音频流和一个视频流),不过含有单一音频流或单一视频流的AVI文件也是合法的。AVI可以算是Windows操作系统上最基本的、也是最常用的一种媒体文件格式。

RIFF(Resource Interchange File Format资源交互文件格式) ,是由Microsoft提出的一种多媒体文件存储方式,不同编码的视频、音频文件按照RIFF保存,当提取文件时,可以根据RIFF的规则解析文件。常见的RIFF文件有:WAV、AVI等。
RIFF文件使用四字符码FOURCC(four-character code)来表征数据类型,比如‘RIFF’、‘AVI ’、‘LIST’等。注意,Windows操作系统使用的字节顺序是little-endian,因此一个四字符码‘abcd’实际的DWORD值应为0x64636261。另外,四字符码中像‘AVI ’一样含有空格也是合法的。

2.AVI格式示意图(本节为抄录)

AVI格式包含3块内容:

  1. 信息块——包括文件的通用信息,定义数据格式,所用的压缩算法等参数;
  2. 数据块——包含实际数据流,即图像和声音序列数据。这是文件的主体,也是决定文件容量的主要部分。视频文件的大小等于该文件的数据率乘以该视频播放的时间长度;
  3. 索引块——索引块包含数据块列表好它们在文件中的位置,以提供文件内数据随机存取能力。

————抄录结束————

3.示意图 VS 数据结构 VS 具体数据

这里拿一个具体的avi视频文件,参照示意图和部分C语言代码进行对照学习。

3.1 RIFF文件头【最开始12个字节】


注意这里的数据长度是unsigned int(4个字节),小端模式(低位在前,高位在后),例如本文件的长度是0x001D8624.

3.2 hdrl信息【第13-24字节】

3.3 avih信息【第25-88字节】

记录AVI文件的全局信息,使用AVIMAINHEADER数据结构来操作

具体视频中的数据:

width=0x0140=320,height=0xF0=240,对应的AVI文件是320*240像素.

3.4 strl块【】

它包含strh和strf两个子块。

3.4.1 strh块

typedef struct avi_strh_chunk
{    unsigned char id[4];            //块ID,固定为strhunsigned int size;              //块大小,等于struct avi_strh_chunk去掉id和size的大小unsigned char stream_type[4];   //流的类型,vids表示视频流,auds表示音频流unsigned char codec[4];         //指定处理这个流需要的解码器,如JPEGunsigned int flags;             //标记,如是否允许这个流输出、调色板是否变化等,一般设为0即可unsigned short priority;        //流的优先级,视频流设为0即可unsigned short language;        //音频语言代号,视频流设为0即可unsigned int init_frames;       //为交互格式指定初始帧数(非交互格式应该指定为0)unsigned int scale;             //unsigned int rate;              //对于视频流,rate / scale = 帧率fpsunsigned int start;             //对于视频流,设为0即可unsigned int length;            //对于视频流,length即总帧数unsigned int suggest_buff_size; //读取这个流数据建议使用的缓冲区大小unsigned int quality;           //流数据的质量指标unsigned int sample_size;       //音频采样大小,视频流设为0即可RECT        rcFrame{short int left;short int top;short int right;short int bottom;};      //视频数据图像所占的矩形。即这个流在视频主窗口显示的位置。
}AVI_STRH_CHUNK;

3.4.2 strf块

typedef struct avi_strf_chunk
{unsigned char id[4];             //块ID,固定为strfunsigned int size;               //块大小,等于struct avi_strf_chunk去掉id和size的大小unsigned int size1;              //size1含义和值同size一样unsigned int width;              //视频主窗口宽度(单位:像素)unsigned int height;             //视频主窗口高度(单位:像素)unsigned short planes;           //始终为1  unsigned short bitcount;         //每个像素占的位数,只能是1、4、8、16、24和32中的一个unsigned char compression[4];    //视频流编码格式,如JPEG、MJPG等unsigned int image_size;         //视频图像大小,等于width * height * bitcount / 8unsigned int x_pixels_per_meter; //显示设备的水平分辨率,设为0即可unsigned int y_pixels_per_meter; //显示设备的垂直分辨率,设为0即可unsigned int num_colors;         //含义不清楚,设为0即可   unsigned int imp_colors;         //含义不清楚,设为0即可
}AVI_STRF_CHUNK;

4.使用ffmpeg软件将其他格式的视频转为mjpeg编码的AVI文件

下载ffmpeg 的windows版本exe,下载地址:https://ffmpeg.org/download.html;选择windows版本的可执行文件。

ffmpeg -i hc16s.mp4 -s 320x240 -c:v mjpeg   hc16s_1.avi

ffmpeg使用参考文章:《01 FFmpeg使用入门》

5.使用《格式工厂》将其他格式的视频转为mjpeg编码的AVI文件

在格式工厂官网下载该软件:http://www.pcgeshi.com/index.html

5.1打开软件,进入视频转换界面

5.2进入输出配置界面

5.3配置重点

  1. 视频编码一定选 MJPG,这样每帧的图片就是jpg格式;
  2. 屏幕大小根据实际情况选择;
  3. 码率越大,精度就越高,但是文件体积也越大。

重点参考文章:

  1. CSDN博主「houxiaoni01」: [https://blog.csdn.net/houxiaoni01/article/details/84341885];
  2. 作者:原野追逐 JPEG流封装AVI视频.

AVI视频封装格式(阅读笔记)相关推荐

  1. AVI音视频封装格式学习(三)——AVI 数据结构解析

    这里介绍AVI会使用到的数据结构,为了避免翻译引入歧义,决定该部分还是使用英文原文,如后续有时间再进行翻译. AVIMAINHEADER structure The AVIMAINHEADER str ...

  2. AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用

    拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题.RIFF和AVI以及WAV格式,可以参考前面的一些文章.这里详细介绍将一个H264视频流和一个2 ...

  3. AVI音视频封装格式学习(五)——h265与PCM合成AVI文件

    不知道是处于版权收费问题还是什么原因,H265现在也并没有非常广泛的被普及.将h265数据合成AVI的资料现在在网上也基本上没有.使用格式化工厂工具将h265数据封装成AVI格式,发现它在封装的时候其 ...

  4. AVI音视频封装格式学习(二)——AVI RIFF文件参考

    AVI RIFF文件参考 AVI RIFF File Reference 微软AVI文件格式是与捕获,编辑和播放音视频流的应用程序一起使用的RIFF文件规范.通常,AVI文件包含多个不同类型的数据流. ...

  5. 音视频封装格式、编码格式

    音视频封装格式.编码格式 概述 常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid ...

  6. 走进音视频的世界——视频封装格式

    音视频的时长怎么获取,音视频的封面怎么获取,音视频的格式怎么获取呢?这些信息都以特定格式存储在文件开头或者结尾,称为多媒体信息或者多媒体元数据.通用的封装格式由:文件标识头+多媒体信息+音视频(字幕) ...

  7. 在直播软件开发过程中,常用的几种视频封装格式

    1.AVI格式 AVI(Audio Video Interleaved).此格式的中文译名为音频视频交错格式,这种视频格式的优点是图像质量好,无损AVI可以保存alpha通道.缺点也不少,体积过于庞大 ...

  8. FFmpeg之视频封装格式、流媒体协议、视频编解码协议和传输流格式、时间戳和时间基、视频像素数据

    通用视频分析工具:Mediainfo.Elecard StreamEye(视频编码分析工具); 视频封装格式: ********************MP4****************** MP ...

  9. OpenCV视频篇——视频文件格式--视频封装格式--视频编码格式区分

    目录 一.前言 二.视频文件格式(文件格式) 三.视频封装格式(视频格式) 1.AVI 2.QuickTime 3.高级流格式文件 4.RealVideo 5.NAVI 6.DivX 7.MPEG 四 ...

最新文章

  1. 【tensorflow】【pytorch】_debug_错误集合
  2. mysql数据库入门教程(1):数据库的相关概念,存储特点,软件安装教程,数据库启动,服务端登录退出
  3. ACM练习 校赛83C:纸片儿(测试用例通过但WA/TLE)
  4. java hibernate 分页取数_java – Hibernate分页机制
  5. 11.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 自定义插件
  6. awx文件解析,运用NCL处理风云卫星2E的AWX格式数据的总结
  7. 交换机路由器常用命令
  8. scratch素材准备
  9. [通讯方式] 串口通信
  10. Edison 物联网:使用MRAA发挥平台输入输出能力
  11. 相对论学习入门资料集
  12. Retrofit 原理篇
  13. python string转float原来如此简单,集合set的操作,对于动态变化的训练集操作
  14. android sqlite 存储对象,SQLite存储对象
  15. mysql启动错误1455_orcl-1455错误
  16. Springbootg整合validation整合
  17. 流媒体专家(3)rtsp内嵌的会话描述协议sdp
  18. 2021 CCPC 哈尔滨 B. Magical Subsequence(思维题)
  19. C语言指针操作(一)指针变量
  20. 如何判断贴片电解电容正负极

热门文章

  1. 小米Android 13 应用适配指南公告
  2. 如何完全卸载HbuilderX
  3. 《Java语言高级特性(阿里云大学)》笔记 第7~14章 类库+正则+国际化+比较器(文档+思维导图)
  4. 文件属性(三)——st_uid属性和st_gid属性
  5. 白杨SEO:做个世界杯公众号怎么样?以2022年卡塔尔世界杯来做微信搜一搜的SEO流量实战举例
  6. 详解回归分析中相关变量选择的方法和构建思想——岭回归、LASSO 回归、主成分回归和偏最小二乘回归
  7. 中职计算机教师试讲技巧,中职教师资格试讲-20210628154146.docx-原创力文档
  8. GMA Round 1 奇怪的数列
  9. html颜色对应卡,PANTONE色卡
  10. 2020中国高校薪资排行出炉!来看看你们学校排名吧~