5

それで...

RTSP 経由でローカル ファイルにキャプチャした RAW H.264 ビデオ データがあり、そのビデオを Java FX アプリケーションで再生しようとしています。これを行うには、HTTP ライブ ストリーミングを使用する必要があります。

.m3u8 (HLS インデックス) ファイルと .ts (MPEG-TS) ファイルのコレクションを含むローカル フォルダーを使用して、ローカル サーバーで HLS 経由でビデオを再生できる Java FX アーキテクチャのプロトタイプを作成することに成功しました。私にとって最後の作業は、.ts ファイルを .264 / .h264 ファイルに置き換え、ローカル サーバーで H.264 Annex B データの MPEG-TS への変換 / ラッピングを実行することです。

H.264 Annex B を MPEG-TS に変換するために必要なものがわかりません。以下の情報を見つけました...

「Annex B は、トランスポート ストリームなどのライブおよびストリーミング形式で一般的に使用されます...」

szatmary.org/blog/25

「ドキュメントの付属書 B は、従来の MPEG ビデオ エレメンタリ ストリームに似た形式で NAL ユニットをラップするそのような形式の 1 つを指定しているため、必要なフレーミングを提供できない MPEG PS/TS などのコンテナーでの使用に適しています...」

wiki.multimedia.cx/?title=H.264

「Java FX はさまざまなメディア タイプをサポートしています。メディア タイプは、コンテナ形式と 1 つ以上のエンコーディングの組み合わせと見なされます。場合によっては、コンテナ形式は、エンコードされたデータを含む単純なエレメンタリ ストリームである可能性があります。」

docs.oracle.com/javafx/2/api/javafx/scene/media/package-summary.html

「EXT-X-STREAM-INF タグの CODECS 属性を使用します。この属性が存在する場合、ストリームの再生に必要なすべてのコーデックとプロファイルを含める必要があります...」

developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html

エレメンタリー ストリームとトランスポート ストリームの周りに単純なものが欠けているようです。ffmpeg を使用して H.264 ファイルを TS ファイルに変換し、違いを理解しようとしました。おおよそのフォーマットの違いについてはわかっていますが、それを行うための詳細はまだ不足しています。これを紹介するリンクを持っている人、または MPEG-TS 経由で H.264 Annex B データを提供する方法について簡単なことを知っている人はいますか?

ツールを使用するつもりはありません。H.264 Annex B データを解析し、その場でメモリ内のフォーマット変更を実行するカスタム ファイル フォーマットをローカルに用意する必要があります。これを達成するためにパイプで ffmpeg を使用する方法を知っていますが、依存関係を持ちたくないので、パフォーマンスが重要です。

4

1 に答える 1

4

フォーマット変更ではありません。コンテナです。附属書 b を解析して TS ファイルに書き込む必要はありません。TS は、附属書 b ストリームをラップする PES をラップします。mpegts 形式はかなり複雑で、特にサード パーティのライブラリがなければ複雑です。私が書いて仕事で使用している ts コードは、約 1000 行の C++ です。

TS コードを記述するには、16 進エディタを使用して TS ファイルを読み取ろうとし、wikipedia のドキュメントを参照することから始めます。本Video Demystifiedにも、かなり優れたドキュメントがあります。

于 2014-06-04T15:23:26.357 に答える