13

メディア ソース拡張 API を使用してH.264コンテンツをHTML5にライブ ストリーミングしようとしています。

次の方法は非常にうまく機能します。

ffmpeg -i rtsp://10.50.1.29/media/video1 -vcodec copy -f mp4 -reset_timestamps 1 -movflags frag_keyframe+empty_moov -loglevel quiet out.mp4

その後: mp4box -dash 1000 -frag 1000 -frag-rap out.mp4

MP4Boxの出力 ( )を取得し、out_dashinit.mp4それを Web ソケット経由でチャンクごとに JavaScript クライアントに送信し、メディア ソース API にフィードします。

ただし、これはライブ コンテンツには適していません。

私が今やろうとしているのは、リアルタイムで最小限の待ち時間でそれを行うために単一のパイプラインを作成することです。FFmpeg を使用すると、stdout代わりに出力をリダイレクトしout.mp4てコンテンツを取得することができます。MP4Box をパイプラインに組み込むことが可能かどうかはわかりませんでした。

  1. MP4Box は、ファイル以外のソースから入力データを取得できますか?
  2. MP4Box は、そのようなコンテンツを (ファイルまたはその他のソースから) リアルタイムで取得しながら徐々に取得できますか? つまり、ストリームが 1 秒間停止すると、少し待ってから自動的に再開します。
  3. 同じ質問ですが、出力について: ファイルではないもの ( などstdout) に出力できますか? また、出力データの準備ができたらいつでもそれを取得して Web クライアントに転送できるように、徐々に出力できますか?基本的に、終わりのない破線の MP4 を生成します。
4

2 に答える 2

12

必要な出力を生成するためにMP4Boxは必要ありませんが、生成されたファイルでボックスを探してコンテンツをチャンクする必要があります。

基本的にfMP4with を生成し、初期化用のボックスと、生成した MP4 の各フラグメントのボックスをH264ブラウザに送信します。JavaScript でプレーヤをコーディングする必要があります。おそらく、標準の DASH プレーヤを使用することはできません。moovmoof+mdat

正しい断片化された MP4 を生成するには、これを ffmpeg: に渡す必要があります-movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof

必ず最新バージョンを使用してください。

于 2015-06-04T12:19:22.190 に答える
1

あなたのソリューションを理解している限り、ストリーミングではなく、単一の MP4 ファイルを段階的にダウンロードしています。私はそれを正しく理解していますか?

私は最近、RTP データソースから実際の DASH ライブ ストリーミングを行うRTP2DASHプロジェクトを開始しました。これはまだ「アルファ版」ですが、単純なユースケースには簡単に採用できるはずです。

于 2015-09-11T10:59:07.677 に答える