問題タブ [media-source]
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.
javascript - MediaSource API、奇妙な動作のバッファリング
MediaSourceAPI を使用するストリーミング Web アプリケーションをテストしています。すべて正常に動作しますが、大きなファイル (つまり 240MB 以上) をストリーミングすると、ビデオのバッファが奇妙な動作をします。より明確にするために、確認できる3つの画像を添付しました。私のスクリプトは mediaSource オブジェクトを作成し、addSourceBuffer を呼び出してから、追加するチャンクがあるため、appendBuffer を何度も呼び出します。私はバッファーをうまく構成していないと思うので、mediaSource API はバッファー長のデフォルト値を使用します。
私を手伝ってくれますか?
https://productforums.google.com/forum/#!category-topic/chrome/report-a-problem-and-get-troubleshooting-help/windows8/Stable/0igRzDJQ7dsにアクセスしてください
google-chrome - mediaSource API は Chrome では動作しませんが、Firefox ではスムーズに動作します
gstreamer を使用して生成された WebM 形式のビデオと、Websocket 経由で送信される個々のフレームをストリーミングしようとしています。典型的な webm ファイルのバイト配置は次のようになります (既にご存知かもしれません)。
gstreamer の出力を filesink にリダイレクトすると、絶対時間コードと相対時間コードが正しく書き込まれていることがわかります。同じ gstreamer パイプラインを使用して、バイト シーケンス (サンプル) を抽出します。これらのサンプルは、Websocket 経由で送信され、MediaSource API を使用してクライアント側で受信されます。
私のクライアント JavaScript の実装については、こちらで説明しています。クライアントを Firefox で実行すると、ビデオは問題なくスムーズに実行されます。ただし、Chrome では、しばらくすると、または開始時にビデオがフリーズします。
sourceBuffer.mode = "sequence" または "segments" を変更しようとしましたが、Chrome ではどのオプションも機能しませんが、Firefox のビデオ フィードは "sourceBuffer.mode" の値の影響をまったく受けません。これらのモードの説明はここにあります。(私は、MediaSource API が IE と Firefox で同じように動作すると想定しています。Mozilla の Web サイトにはドキュメントがありません)。
また、mediaSource.duration は Chrome と Firefox の両方で Infinity/NaN です。
どの方法を試しても、Chrome のライブ フィードはまったく機能しませんが、Firefox ではスムーズなビデオが表示されます。なぜこれが起こっているのでしょうか?
更新: chrome://media-internals の詳細を提供する Chrome バージョン 41 にアップグレードしました。表示されるメッセージは次のとおりです。
「append_window_end」を修正または計算する方法???
chromecast - Chromecast の最大メモリ サイズ
Chromecast レシーバーの最大ビデオ バッファ サイズは? MediaSource を使用して独自の HLS のような実装を行っており、バッファー制限が必要です。
javascript - MediaSource を Firefox 37.0.1 Ubuntu 14.04 で動作させる際の問題
Ubuntu 14.04 で firefox バージョン 37.0.1 を実行しており、about:config の media.mediasource.enabled を true に設定しています。
しかし、単純な MediaSource (Media Source Extensions から) を機能させることができません。たとえば、これを index.html として実行すると、次のようになります。
コンソール 'test 1' にログインしているだけで、'test 2' にはログインしていません。そのため、おそらく上記のコードの MediaSource で「スタック」しているようです。はい、その「new MediaSource」行をコメントアウトすると、「test 2」が出力されます。なぜこれが当てはまるのでしょうか?私の目標は、この Firefox/Ubuntu コンボで MediaSource 機能を動作させることです。
ありがとう。
ヘンリー
html - html5 メディア要素が停止していて、さらにメディアの再生が継続されるのを待っていることを特定する方法
私はhtml5ビデオを使用して再生MediaSource
しています。SourceBuffer
中断のないビデオ再生を継続するために、DASH フラグメントを順次フェッチしています。ただし、ネットワークの状態により、SourceBuffer
データが不足してプレイを続行できない場合があります。そのデータが到着すると、プレイが再開されます。しかし、この期間の間、ビデオは停止しているように見えます。バッファリングに必要なデータとして一時停止されていることを、メディア要素に視覚的に示したいと思います。
ビデオで「待機中」イベントと「停止」イベントをバインドしようとしましたが、どのイベントも発生しません。
メディアが停止しているかどうか、いつ再開するかを知る方法はありますか?
ありがとう。
javascript - Media Source API を使用して表現の変更をスムーズに行う
私は現在、JavaScript とMediaSource APIを使用して DASH プレーヤーに取り組んでいます
ストリーミングは正常に機能していますが、表現の変更に行き詰まっています。おそらく、再生中に表現を変更する最も強引な方法は、HTML ドキュメントの<video>要素を置き換えることです。
しかし、Media Source API を使用してアダプテーション (表現の変更) を実装する簡単な方法があるかどうか疑問に思っていました。1 つの Media Source オブジェクトで多くのソース バッファを処理できることを読みましたが、2 つ目のビデオ バッファを追加すると例外が発生します。
Chrome 43.0.2357.65m を使用しています
例外:
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 を生成します。