是否有人知道(或知道包含)常見視頻格式(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文件格式的信息。
您需要此信息才能使您的程序正常工作。
在旁註中,壓縮格式不能獨立保護所有獨立幀。它們保證一個單獨的幀和幾個中間幀,它們只包含關於當前幀如何與上一個完整幀不同的信息。所以你不能在每個幀數提取完整的幀。