2

H.264 ストリームを含む MPEG-2 TS ビデオに取り組んでおり、PAT、PMT、PES などをスキャンして、ストリームに保存されているビデオ プロパティを探しています。

PAT、PMT、およびエレメンタリ ストリーム タイプと PID を読み取ることができます。ここで、解像度とフレームレート (fps) を見つけたいと思います。それらは PES ヘッダーにありますか、それとも他の場所にありますか? それらは PAT または PMT にはありません。

以下では、トランスポート ストリーム パケット エディターは 2 つの異なる情報を見つけることができます。1 つはそれ自体、もう 1 つは Haali Media Decoder ヘルパー コーデックからです。最初のものを取得する方法:

ここに画像の説明を入力

擬似コードは歓迎されます。

4

4 に答える 4

5

いいえ、それらは PES ヘッダーには存在しませんでした。MPEG2-TS で H.264 ビデオから解像度とフレーム レートを見つけるには、H.264 ストリームから SPS (シーケンス パラメータ セット) を解析する必要があります。

H.264 NAL (ネットワーク アダプテーション レイヤー) ユニットを解析する手順は次のとおりです。

  1. NALユニットプレフィックスを解析します(NALユニットプレフィックスは3(0x00、0x00、0x01)または4(0x00、0x00、0x00、0x01)バイトコードです)次にヘッダー(プレフィックスコードの後の次のバイト)

  2. ヘッダーバイトからNALユニットのタイプ(最後の5ビット)を確認します。

  3. NAL ユニットがタイプ 7 の場合、この NAL ユニットは SPS NAL ユニットであり、コードを解析します

この ITU リンクは、h.264 標準に関するドキュメントを提供します

セクション7.3.2.1.1を参照してください: シーケンス パラメータ セット データ構文は、SPS でパラメータを検索するための構文を提供します。

于 2014-09-24T12:14:51.410 に答える
5

MPEG2TS ヘッダーの高さ幅情報が利用できるかどうかはわかりません。TS ファイルには複数のプログラムを含めることができるためです。ただし、H.264 エレメンタリ ストリームで作成された TS ファイルのみをターゲットにしている場合は、H.264 エレメンタリ ストリームの SPS からこれらの情報を取得できます。

すべての H.264 フレームは、4 または 3 バイトのシーケンス ヘッダー0x00 0x00 0x01または0x00 0x00 0x00 0x01で始まります。開始ヘッダーの後の次のバイトで AND 演算を行うと、フレームは SPS フレームであり、0x07 に等しい。

例 SPS フレーム 0x00 0x00 0x00 0x01 0x67 ... AND 演算を行う (0x67 & 0x1F) = 0x07

SPS ヘッダーの解析も簡単な作業ではありませんが、詳細は ffmpeg ソース コードで確認できます。

お役に立てれば。

于 2014-08-20T09:08:05.177 に答える
1

探している情報は、H.264 SPS NAL ユニット内にあります。

PES データを解析し、NALU を抽出してから、SPS データを解析する必要があります。そこに解決策があります。SPS が VUI 情報を伝送する場合、目的のフレーム レートに関する情報が得られます。

MPEG2-TS はトランスポート ストリームです。何かを転送しますが、それが何を運ぶかについての詳細な情報は運びません。物を包むだけです。

MPEG2-TS から使用できるのは、PES ヘッダーの PTS/DTS であり、提供されたプレゼンテーション タイムスタンプからフレーム レートを平均化します。

適切に行うには、PES ヘッダーを解析し、NALU ヘッダーを解析し、実際の SPS NAL ユニットを解析し、存在する場合はそれに含まれる VUI を解析します。

于 2014-09-24T04:57:13.567 に答える
1

これの作業コードは、FFMPEG プロジェクトの ffprobe バイナリ内に常駐していると思います。これは、目的の出力を生成するためです。

$ ffprobe -v quiet -show_streams output1.mp4 
[STREAM]
index=0
codec_name=h264
... // A bunch of stream data
width=1280
height=1024
sample_aspect_ratio=1:1
display_aspect_ratio=5:4
....
r_frame_rate=30000/1001
avg_frame_rate=30000/1001
time_base=1/30000
...
[/STREAM]
于 2014-08-23T06:53:34.133 に答える