問題タブ [http-range]
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 - 範囲の終了を要求していない HTML5 ビデオ要素
Rangeリクエストを介してサーバーからファイル(mp4、mp3は関係ありません)をロードする<video>
and要素があります。<audio>
ただし、要素はサーバーから最後の範囲のみを要求しているようで、それ以降はバイト 0 から最後まで直接ストリーミングしようとするため、プレーヤーが「ダウンロード ループ」に陥り、ブラウザーがすべてを一時停止します。ダウンロードが完了するまで他の操作を行います。
この問題の解決策を知っている人はいますか? たとえば、ストリーム リクエストの実際の末尾をcontent length
orにする必要がありaccept-ranges
ますか?
Chrome からの完全なリクエスト リストを次に示します。下部にはview?watch=v__AAAAAA673pxX
、基本的にelement
.
簡単に言うと、リクエストを使用すると、html5 要素がダウンロード ループに陥り、http-range
他のすべてのリクエストが「保留中」のままになります。
アップデート
問題はサーバー側で解決されました。
元のストリーム関数は文字通りすべてのバイトを出力しますが、実際のバッファーのサイズのみを出力するようにコードを変更しました。これelements
により、残りのデータに対して新しい要求が行われます。
ここでの重要な注意点は、ファイルのサイズ、各リクエストの開始位置と終了位置に一致するcontent-length
とaccept-ranges
を返すことです。content-ranges
HTTP RANGE
今後の参考のために:
新しいストリーム機能:
java - Spring での HTTP Range ヘッダーの解析と使用
私は、Range
ヘッダーを受け入れる必要があるSpringコントローラーを作成しており、そこにある値を使用してサードパーティのライブラリを使用してデータを要求し、結果を返します。
SpringHttpRange
クラスは有望に見えます。具体的には、parseRanges
関数は次のように述べています。
指定されたカンマ区切りの文字列を
HttpRange
オブジェクトのリストに解析します。このメソッドは、[sic] Range ヘッダーを解析するために使用できます。
ただし、このクラスは、「表現の全長」を知らずに解析された値を抽出するためのインターフェイスを提供しません。
別の API に転送するリクエストを処理しているため、全体の長さはわかりません。
Range ヘッダーを検査し、長さを知らなくても値を抽出する標準的な Spring の方法はありますか? 可能であれば、カスタム パーサーを作成することは避けたいと考えています。