2012-04-03 10 views
0

FLVフォーマット仕様はここで:http://www.adobe.com/content/dam/Adobe/en/devnet/flv/pdfs/video_file_format_spec_v10.pdfXugglerのIPパケットは、FLVタグまたはタグ部分とどのように対応していますか?

1)FLV本体がタグ

2からなる)各タグは、ヘッダとデータ

3から成る)データAUDIODATA又は

4であってもよいです)AUDIODATAは、ディスクリプタバイトとオーディオフレームで構成されています。

私の質問は:IPacketで、XugglerでFLVを読むときは?

現在、私はAUDIODATAからオーディオフレームを抽出しています。私は最初のバイトを分析し、フォーマットを推測し、他のデータを切り取り、IPacketにラップし、推測フォーマットで設定されたIStreamCoderデコーダに送ります。

私はこれをXugglerに委ねることができますか?私は​​のFLV形式を作成し、そこからパケットを覗くことができますか?

InputStreamから​​に渡すとします。このストリームにはFLV本体だけが含まれていますか?オーディオパケットが正しく抽出されますか?

答えて

1

XugglerのIContainerオブジェクトはFLVストリームを解析し、それを使用してコンテナ内のIStreamを判定します。次に、IContainerから各パケットを読み取るときに、IPacket#getStreamIndex()の値を確認します。これによりストリーム#が得られ、それをIContainerで使用してメタデータでIStreamオブジェクトを取得できます。

IPacket#getData()メソッドは、オーディオのペイロードを返しますが、ヘッダーバイトは返しません。これは、IContainer/IStreamオブジェクトがこれらのバイトを取得するためです(Xugglerを介して独立してアクセスすることはできません)。

これは、IContainerがFLVストリーム(VLC、mPlayer、およびあらゆる種類の他のライブラリで使用される)の解析を行うFFmpegのlibavformat Cコードに委任したためです。

希望に役立ち、

アート

+0

私は 'IPacket#getStreamIndexを(使用する場合)'私は ''いるIContainer#のgetStream()+のIStream#getStreamCoder()を使用して回避することができるし、ちょうど独立 'IStreamCoder'を作成それは 'make()'メソッドでですか?今すぐ – Dims

+0

;実際にはメタデータを管理するIContainerなので、IContainerから取得する必要があります。 –

+0

パケットのストリーム番号を確認するためには何ですか?私がコンテナからコーダを取っているとき、私はすでにこの番号を指定しなければなりません。私は正しいですか?これは他のストリーム番号ですか? – Dims

関連する問題