それで...
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 を使用する方法を知っていますが、依存関係を持ちたくないので、パフォーマンスが重要です。