h264ストリームで参照フレームを見つけるアルゴリズムを探しています。さまざまなソリューションで私が見た最も一般的な方法は、アクセスユニットの区切り文字とIDRタイプのNALを見つけることでした。残念ながら、私がチェックしたほとんどのストリームには、IDRタイプのNALがありませんでした。私は助けに感謝します。よろしくJacek
質問する
5287 次
1 に答える
8
H264 フレームは、startcode プレフィックスと呼ばれる特別なタグによって分割されます。これは、0x00 0x00 0x01または0x00 0x00 0x00 0x01 のいずれかです。2 つのスタートコード間のすべてのデータは、H264 音声の NAL ユニットを構成します。したがって、h264 ストリームで startcode プレフィックスを検索する必要があります。startcode プレフィックスの直後のバイトは、NAL ヘッダーです。NAL ヘッダーの最下位 5 ビットは、NAL ユニット タイプを示します。nal_unit_type = 5 の場合、その特定の NAL ユニットは参照フレームです。
このようなもの:
void h264_find_IDR_frame(char *buf)
{
while(1)
{
if (buf[0]==0x00 && buf[1]==0x00 && buf[2]==0x01)
{
// Found a NAL unit with 3-byte startcode
if(buf[3] & 0x1F == 0x5)
{
// Found a reference frame, do something with it
}
break;
}
else if (buf[0]==0x00 && buf[1]==0x00 && buf[2]==0x00 && buf[3]==0x01)
{
// Found a NAL unit with 4-byte startcode
if(buf[4] & 0x1F == 0x5)
{
// Found a reference frame, do something with it
}
break;
}
buf++;
}
}
于 2012-06-25T06:50:54.753 に答える