是否有人知道(或知道包含)常见视频格式(MPEG-1/2/4,.wmv,.mov等)的帧开始代码列表。视频编解码器开始代码
例如,MPEG-1视频帧(我认为)总是以“00 00 01 00”开头。
实质上,我想知道这些,这样我就可以编写一个程序,它可以自动查找整个视频中帧的开始,查看多种不同的视频格式。
是否有人知道(或知道包含)常见视频格式(MPEG-1/2/4,.wmv,.mov等)的帧开始代码列表。视频编解码器开始代码
例如,MPEG-1视频帧(我认为)总是以“00 00 01 00”开头。
实质上,我想知道这些,这样我就可以编写一个程序,它可以自动查找整个视频中帧的开始,查看多种不同的视频格式。
你想实现什么?
这是一个问题如何构建视频容器类型?
见例如: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文件格式的信息。
您需要此信息才能使您的程序正常工作。
在旁注中,压缩格式不能独立保护所有独立帧。它们保证一个单独的帧和几个中间帧,它们只包含关于当前帧如何与上一个完整帧不同的信息。所以你不能在每个帧数提取完整的帧。