問題タブ [mpeg-dash]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mpeg-dash - MPEG-DASH サーバーの mpd ベース URL
サーバーとクライアントの両方であるローカル マシンに DASH プレーヤーを実装しようとしています。mpd とデータセットをローカル ホストに配置しました。mpd のベース URL を変更するにはどうすればよいですか?
ffmpeg - mp4box を使用したダッシュ コンテンツのライブ ストリーミング
メディア ソース拡張 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 をパイプラインに組み込むことが可能かどうかはわかりませんでした。
- MP4Box は、ファイル以外のソースから入力データを取得できますか?
- MP4Box は、そのようなコンテンツを (ファイルまたはその他のソースから) リアルタイムで取得しながら徐々に取得できますか? つまり、ストリームが 1 秒間停止すると、少し待ってから自動的に再開します。
- 同じ質問ですが、出力について: ファイルではないもの ( など
stdout
) に出力できますか? また、出力データの準備ができたらいつでもそれを取得して Web クライアントに転送できるように、徐々に出力できますか?基本的に、終わりのない破線の MP4 を生成します。
manifest - MPEG-DASH をサポートするコンテンツ プロバイダー
MPEG-DASH の実際のコンテンツを探しています。Vod / アダプティブ ストリーミングに mpd マニフェストを使用しているコンテンツ プロバイダーを知っている人はいますか?
ffmpeg - FFMPEG で断片化された MP4 を作成する際のフラッシュと遅延の問題
次のコマンドを使用して、html5 ストリーミング用にフラグメント化された mp4 を作成しています。
- 「-i rtsp://172.20.28.52:554/h264」は、IP カメラからの rtp パケット ストリームのソースが h264 であるためです。テストのために、カメラは GOP が 1 に設定されています (つまり、すべてのフレームがキー フレームです)。
- 「-vcodec copy」は、トランスコーディングが不要で、mp4 への再多重化のみを行うためです。
- 「-movflags empty_moov+default_base_moof+frag_keyframe」は、メディア ソース拡張仕様に従ってフラグメント化された mp4 を作成します。
- mp4 を stdout に出力するには、最後に「-」を付けます。出力を取得し、Web ソケットを介して Web クライアントに送信しています。
私が解決しようとしている遅延の問題を期待して、すべてがうまくいっています。データが stdout から着信するたびに、到着のタイムスタンプを付けてログに記録すると、次の出力が得られます。
16/06/2015 15:40:45.239 取得したデータ サイズ = 24
16/06/2015 15:40:45.240 取得したデータ サイズ = 7197
16/06/2015 15:40:45.241 取得したデータ サイズ = 32768
16/06/2015 15:40:45.241 得られたデータ サイズ = 4941
16/06/2015 15:40:45.241 得られたデータ サイズ = 12606
16/06/2015 15:40:45.241 取得したデータ サイズ = 6345
16/06/2015 15:40:45.241 取得したデータ サイズ = 6339
16/06/2015 15:40:45.242 取得したデータ サイズ = 6336
16/06/2015 15:40:45.242 取得したデータ サイズ = 6361
16/06/2015 15:40:45.242 得られたデータ サイズ = 6337
16/06/2015 15:40:45.242 取得したデータ サイズ = 6331
16/06/2015 15:40:45.242 取得したデータ サイズ = 6359
16/06/2015 15:40:45.243 取得したデータ サイズ = 6346
16/06/2015 15:40:45.243 取得したデータ サイズ = 6336
16/06/2015 15:40:45.243 取得したデータ サイズ = 6338
16/06/2015 15:40:45.243 取得したデータ サイズ = 6357
16/06/2015 15:40:45.243 取得したデータ サイズ = 6357
16/06/2015 15:40:45.243 取得したデータ サイズ = 6322
16/06/2015 15:40:45.243 取得したデータ サイズ = 6359
16/06/2015 15:40:45.244 得られたデータ サイズ = 6349
16/06/2015 15:40:45.244 得られたデータ サイズ = 6353
16/06/2015 15:40:45.244 得られたデータ サイズ = 6382
16/06/2015 15:40:45.244 取得したデータ サイズ = 6403
16/06/2015 15:40:45.304 得られたデータ サイズ = 6393
16/06/2015 15:40:45.371 得られたデータ サイズ = 6372
16/06/2015 15:40:45.437 得られたデータ サイズ = 6345
16/06/2015 15:40:45.504 取得したデータ サイズ = 6352
16/06/2015 15:40:45.571 得られたデータ サイズ = 6340
16/06/2015 15:40:45.637 得られたデータ サイズ = 6331
16/06/2015 15:40:45.704 取得したデータ サイズ = 6326
16/06/2015 15:40:45.771 得られたデータ サイズ = 6360
16/06/2015 15:40:45.838 得られたデータ サイズ = 6294
16/06/2015 15:40:45.904 取得したデータ サイズ = 6328
16/06/2015 15:40:45.971 得られたデータ サイズ = 6326
16/06/2015 15:40:46.038 取得したデータ サイズ = 6326
16/06/2015 15:40:46.105 取得したデータ サイズ = 6340
16/06/2015 15:40:46.171 得られたデータ サイズ = 6341
16/06/2015 15:40:46.238 取得したデータ サイズ = 6332
ご覧のとおり、最初の 23 ライン (ビデオの約 1.5 秒のデータを含む) はほぼ瞬時に到着し、その後、ビデオが毎秒 15 フレームであるため、連続する各 2 ライン間の遅延は約 70 ミリ秒です。この動作により、約 1.5 秒の遅延が発生します。
特に各フレームはmp4内の独自のフラグメントであるため、ffmpegが最初の23フレームをメモリに保持する必要がある理由がわからないため、フラッシュの問題のように見えます。ただし、ffmpeg がこのデータをより高速にフラッシュする方法は見つかりませんでした。
誰か提案がありますか?
これは、 mp4box を使用したライブ ストリーミング ダッシュ コンテンツのフォローアップの質問であることに注意してください。
samsung-smart-tv - サムスンテレビのmpeg-dash配信
アプリ フレームワークと avplay プレーヤーを使用して、Samsung TV にコンテンツを配信する新しいアプリを作成しています。
使用しているコンテンツは、Mpeg-Dash でラップされた H.264 です。
以下のドキュメントに従っています
以下に提供されるplayerWrapperクラスがあります
このクラスは、単にこのワークフローに従うメインの app.js ファイルから初期化されます
- playerWrapper init を呼び出す
- ライセンスの URL を設定します
- コンテンツの URL を設定します
- トークンを設定します
- コールプレイ
ドキュメントに記載されているように、PlayReady プラグインまたは SetPlayerProperty メソッドを使用すると、TV がライセンス サーバーを呼び出さないようです。
プレーヤーの仕様を見ると、Mpeg-Dash と H.264 の両方がサポートされていることがわかります。
私の質問は
- この問題を回避するにはどうすればよいですか?
- 少なくとも出発点があることを取得できるかのように、このエラーのドキュメントを見た人はいますか?
ffmpeg - カメラのビデオ ストリームを Amazon S3 にアップロードし、それを Android フォンにダウンロードしたいと考えています。私はこれに完全に慣れていません。これどうやってするの?
私は本当にばかで、RTP/SIP は初めてです。マイクロプロセッサに接続されたカメラからクラウドにビデオをアップロードするために推奨されるスタックはありますか? MPEG DASH、Live555、ffmpeg など、私が目にしているすべてのものの違いは何ですか?
WhatsApp または Dropcam はどのようにライブ ビデオを送信しますか?
mpeg-dash - mpeg-dash ライブ プレイリストを実装するには?
ライブ ストリーム用に mpeg-dash ビデオ サーバーを実装しています。
チャンク ストリームと mpd へのチャンクの追加 - 動作、例を参照
しかし、スライドプレイリストを実装しようとすると
(たとえば、5 つのチャンクがあり、新しいチャンクが古いチャンクに置き換わります。現在、他の値を変更せずに、更新された SegmentTimeline を出力するだけです。)
プレーヤーは、.mpd の更新後に再生を停止します。
セグメント時間 - ストリームの実際のタイムラインです。(つまり、.m4* ファイルと同じ)
スライド プレイリストを使用したライブ ビデオに実装する必要がある属性/要素は何ですか?