是否有人知道(或知道包含的资源)常见视频格式(MPEG-1/2/4,.wmv,.mov等)的帧起始码列表。
例如,MPEG-1视频帧(我认为)始终以“00 00 01 00”开头。
本质上我想知道这些,以便我可以编写一个程序,可以在一个视频中自动找到各种不同视频格式的帧开始。
答案 0 :(得分:1)
你想达到什么目的?
这是一个如何构建视频容器类型的问题吗?
例如参见:http://www.daubnet.com/formats/AVI.html
这是描述avi文件的结构。 Google可以帮助您找到其他容器文件格式。
录制视频时,通常由单个帧组成,考虑目录中的各个位图文件。
为了只有1个视频文件,这个帧流放在一个容器中,该容器有一个描述内容的标题和一个特定的布局,其中帧按顺序存储在文件中。
我自己的容器的简单示例:
{
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文件格式的信息。
您需要此信息才能使您的计划正常运作。
另外,压缩格式并不能独立保护所有单独的帧。它们保护单个帧,然后保护几个中间帧,这些帧仅包含有关当前帧与上一个完整帧的差异的信息。因此,您无法在每个帧编号中提取完整的帧。