一般的なビデオフォーマット(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が他のコンテナファイル形式を見つける手助けをするかもしれません。
ビデオを録画するときは、通常、個々のフレームで構成され、ディレクトリ内の個々のビットマップファイルを考えます。
ビデオのファイルが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は、これらのコンテナタイプの1つだけです。 個々のフレームを取得するには、ファイル内のヘッダーを解釈し、その情報に基づいて、解析するフレームの位置を計算する必要があります。
私はあなたにaviファイルフォーマットの定義へのリンクを投稿しました。 mpeg/mkv/ogmファイル形式に関する情報を入手できる他の場所もあります。
プログラムを動作させるには、この情報が必要です。
圧縮されたフォーマットは、すべての個々のフレームを独立して保護するわけではありません。それらは個々のフレームを安全にし、次に現在のフレームが最後の完全なフレームとどのように異なるかに関する情報のみを含むいくつかの中間フレームを安全にします。したがって、すべてのフレーム番号で完全なフレームを抽出することはできません。