0

有谁知道(或知道包含)常见视频格式(MPEG-1/2/4、.wmv、.mov 等)的帧起始代码列表的资源。

例如,一个 MPEG-1 视频帧(我认为)总是以“00 00 01 00”开头。

本质上,我想知道这些,这样我就可以编写一个程序,该程序可以自动找到整个视频中许多不同视频格式的帧的开始。

4

1 回答 1

1

你想达到什么目标?

这是一个如何构建视频容器类型的问题吗?

参见例如:http ://www.daubnet.com/formats/AVI.html

这是对 avi 文件结构的描述。Google 可能会帮助您找到其他容器文件格式。

当您录制视频时,它通常由单独的帧组成,想想目录中的各个位图文件。

如果只有一个视频文件,则将此帧流放入一个容器中,该容器具有描述内容的标题和特定布局,其中帧按顺序存储在文件中。

我自己的容器的简单示例:

{
   struct header
   {
      unsigned int frametype;
      unsigned int framesize;
   };

   byte*  readFrame( header* pHdr, int frameNum )
   {
       byte* pFirstFrame = ((byte*) pHdr) + sizeof( header );
       return pFristFrame + frameNum * pHdr->framesize;
   }
}

还有其他几种容器类型。AVI 只是这些容器类型中的一种。要获取各个帧,您必须解释文件中的标题,然后根据该信息计算要解析的帧的位置。

我向您发布了指向 avi 文件格式定义的链接。还有其他地方可以获取有关 mpeg/mkv/ogm 文件格式的信息。

您需要此信息才能使您的程序运行。

附带说明一下,压缩格式并不能独立保护所有单独的帧。它们保护一个单独的帧,然后是几个中间帧,这些中间帧只包含有关当前帧与最后一个完整帧有何不同的信息。因此,您无法在每个帧号处提取完整的帧。

于 2008-08-27T12:55:43.100 回答