2011-07-20 9 views
3

MPEGトランスポートストリーム(TS)の高さと幅、およびその他の説明的なデータを取得する方法を知る必要があります。MPEG-2トランスポートストリームからのビデオサイズ(水平および垂直)

この回答が表示される前に、私はビデオシーケンスヘッダー(00 00 00 B3)をよく知っています。これは、MPEG プログラムストリーム(すなわちMPEGファイル)の仕様の一部であり、ではなく、 MPEGトランスポートストリームです。

トランスポートストリームを.tsファイルに保存すると、この情報はffmpegから取得できますが、ffmpegが利用できない環境では、ffmpegから独立して実行できる必要があります。したがって、ファイル内のこのデータを手動で解析する必要があり、MPEG-TSからのタイムスタンプ(スライス開始)を除いて、関連するメタデータについて何も見つかりません。

ありがとうございます!

答えて

2

ISO 13818-1(H.222とも呼ばれます)をチェックして、トランスポートストリームパケット、PIDフィルタリング、PESパケットについて少し読んでください。

ストリームはパケットに分割されます。各パケットは(通常)188バイト長です。パケットヘッダーには、目的のパケットのみをフィルタリングできるPID(パケットID)が含まれます。

パケットは、MPEG-2データ+メタデータ(タイミングデータなど)を保持するPESパケットを構成します。ビデオの幅と高さを確認する前に、PESパケットを構築して解析する必要があります。

興味のあるPIDをどのように知っていますか?そのためには、PATとPMTについて読む必要があります。 PATはPMTを取得する方法を示し、PMTはどのPIDにMPEG-2情報が含まれているかを示します。

このすべては、上記の文書に(長さで)記載されています。しかし、オンラインで多くのチュートリアルや説明があります。たとえばhereなどがありますが、他にも多数あります。 Wikipedia articleは始めるのに適しています。

+0

答えは接線の方法です! –

+0

@Dipan、質問は、データファイルを手動で解析する方法(MPEG-2トランスポートストリームファイル)でした。あなたがTSパケット、セクション、PATとPMTを認識していないなら、どのようにしてPESパケットを取り出せますか?あなたの答えはファイルの解析には関係しませんが、OPにはPESパケットのストリームがあると仮定します。 –

1

実際には、ビデオシーケンスヘッダ(00 00 01 B3)は、エレメンタリービデオビットストリームを記述するISO/IEC 13818-2仕様の一部です。したがって、トランスポートストリームにはこのヘッダーも含まれます。

ここで問題となるのは、このヘッダーの内容を抽出することです。この開始コードを見つけてそれに続くバイトを使用するだけではありません。 1.ヘッダーの内容を2つのPESまたはトランスポートストリームパケットに分割することができます。 2.トランスポートストリームにビデオストリームだけが含まれていない場合、この一連のバイトはオーディオまたはバイナリデータで検出されます。

1

ビデオサイズはではありませんプロパティのトランスポートストリームです。これは、基本ビデオストリーム自体の特性である。トランスポートストリームまたはPESパケットにはヘッダーが含まれていません。

解像度(幅x高さ)を抽出するには、PES開始(PUSI付き)パケットを特定し、esヘッダーの解析を開始する必要があります。あなたはを抽出する必要があります。シーケンスヘッダ ISO/IEC 13818のパート2(ビデオ)の一部に答えがあります。クイックリファレンスはwikiにチェックしてください。