問題タブ [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.
video - 指定されたセグメントの WebM ビデオのバイト範囲を検索
webm 形式のビデオがあります (video.webm のように、長さは 60 秒です)
http ヘッダー範囲 (範囲: 100-200) でビデオの指定されたセグメント (つまり、ビデオの分割) を取得したいと考えています。
言い換えれ
ば、ビデオのセクション (4 秒目から 12 秒目など) を取得したいのですが、ffmpeg のようなコンバーターは使用したくありません。サーバーにhttpリクエストを送り、指定範囲のwebmファイルを取得したい。
このメソッド (http 範囲ヘッダー) を使用できますか?
ありがとう
android - 動画のストリーミング中に Android がシークする http 範囲ヘッダー
範囲ヘッダーを使用して、HTTP プロトコルを介してビデオをストリーミングしながらシークを実装した人はいますか?
http プロトコルを介してビデオをストリーミングするための範囲ヘッダーを使用してサーバーを実装しました。これは、Chrome ブラウザーで再生すると正常に動作します。
しかし、Android では、VideoView と MediaPlayer でデータをストリーミングできます。しかし、ストリーミングで問題が発生します。
1) MediaPlayer を使用すると、バッファリングされたビデオまでしかシークできません。バッファを超えてシークしようとすると、再生が停止します。
2) Vitamio ライブラリを使用してみましたが、シークできません。しかし、それは最初から再生されます。(理由がわからない)
node.js - 指定されたコンテンツ範囲で 206 を受信した後、Firefox はそれ以上のデータを要求しません
コンテキストを示すために、node.js サーバーのメソッドを指す属性を<video>
持つタグがあります。src
このメソッドは、ブラウザによって指定された HTTP ヘッダー に応じて、mp4
別のサーバーからファイル、またはファイルの一部を取得します。mp4
Range
Range:bytes=0-
期待される動作 (Chrome の動作)
私のnode.jsサーバーがサードパーティのサーバーからファイル全体をダウンロードするのを防ぐために、一度にダウンロードするために約5MBの最大バッファを実装しました。したがって、ユーザーがヘッダー付きのビデオを取得するためにリクエストを送信した場合
..その後、サーバーは次のように応答します
これは十分に一般的なパターンだと思います。クライアント (この場合はブラウザー) が要求したbytes=0-
(開始から終了まで) にもかかわらず、私は代わりに最初の 5MB で応答し、最も重要なことに、応答には合計 415MB のうちの 5MB ( Content-Range: bytes 0-5000000/415473786
)。206
応答には、応答が部分的な応答であることを示すステータスもあります。
Chrome では、これは期待どおりに機能します。ビデオが最初の 5 MB のビデオの再生を終了する直前に、同じエンドポイントにヘッダーを使用して別のリクエストを行います。
繰り返しますが、最大5MBで応答します...
このパターンは、動画が終了するまで続きます。ユーザーがシーク バーを使用して一時停止またはスキップすると、ブラウザは必要な時間の特定のバイト範囲を要求します。私が言ったように、すべてがChromeでうまく機能します。
Firefox の動作
Firefox の動作を説明することは、正しい動作を説明することよりもはるかに簡単です!
Firefox リクエスト
応答
それだけです - Firefox はビデオの最初の 5MB を再生し、それ以上のリクエストはサーバーに対して行われません。シーク バーにはビデオの正しい再生時間が表示されますが、シーク バーは機能しません。ユーザーがビデオをシークしようとすると、最初にスキップして最初の 5MB をもう一度再生します。
どんな助けでも大歓迎です。
http - HTTP Range リクエスト multipart/byteranges - 最後に CRLF がありますか?
RFC7233は、行末を除いて、素晴らしく明確です。
応答の HTTP 応答本文に特に関心がありますmultipart/byteranges
。HTTP ヘッダーと同様に、各行は CRLF で終了すると想定していますが、このドキュメントではそれについて明示していません。私が完全に困惑しているのは、最後の行です: --THIS_SEPARATOR_SEPARATES--
. その後に CRLF が続きますか?
フルブロック:
なかなか見つからないので、助かります。注: 直観はやめてください。RFC の参照だけにしてください。
curl - HTTP マルチレンジ リクエストが遅い
サーバーに 8 GB のファイルがあり、http マルチレンジ リクエストを使用してこのファイルから 1.5 GB をダウンロードしたいと考えています。カールを使用しています。
500MB の大きな範囲を含む最初のリクエストを除いて、すべてのリクエストはファイル上で均一に分散されます (合計 161 のリクエストがあります)。
大きな範囲のこの最初のリクエストのダウンロード時間は約 40 秒、合計時間は約 560 秒であることがわかりました。つまり、500MB を 40 秒間ダウンロードし、1GB を 520 秒間ダウンロードします。したがって、均一に分散されたリクエストの速度が 6 倍になります。また、この均一に分散されたリクエストが実行されると、ダウンロード率が 6 ~ 8 倍に低下することにも気付きました。
なぜこれが起こるのか分かりません。各リクエストの範囲はオフセットの増加によってソートされるため、なぜこのような速度低下が発生するのかわかりません。何がこのような混乱を引き起こすのか説明していただけますか? さらに、そのような一連のリクエストのパフォーマンスを向上させるにはどうすればよいですか?
必要に応じて、一連のリクエストとタイミングを提供できます。
html - 206 Partial Contentでブラウザリクエストの範囲を狭くする方法
私は現在、ビデオがそれぞれ約 1MB のチャンクでトランスコードされるビデオ ストリーミング サービスを作成しています。Firefox、Chrome、および IE の HTML5 プレーヤーはすべて、(Range ヘッダーを要求に追加することによって) 部分的なコンテンツを要求するために最善を尽くします。残念ながら、ほとんどの場合、このヘッダーは次のようになります。
コンテンツ全体を返すのではなく、コンテンツの 1 MB のみを返したいので、これを返します。
これで、Chrome はこれを完全に受け入れ、全体の長さに達するまで部分的なコンテンツを要求し続けます。ただし、Firefox は、完全なコンテンツではなく、部分的なコンテンツを含む 1 つのリクエストのみを行います。Firefox はそれが完全なコンテンツであると認識しているため、ビデオ全体が再生されているわけではなく、その一部のみが再生されています。Chrome と同じ動作を Firefox で行うにはどうすればよいですか? 416 Range not Satisfiable を返そうとしましたが、Chrome と Firefox の両方がこのステータス コードを受け取った後にリクエストしているようです。
android - HTTP Range ヘッダーを使用した Android VideoView
ビデオ コンテンツの HTTP Range ヘッダーをサポートする Web サーバーがあり、Web Browsers and iOS
うまく機能しますが、基本を使用して Android アプリケーションでテストを開始した後、アプリケーションがHTTP ヘッダーVideoView
でリクエストを作成していないことがわかりました。Range: 0-
HTTP Rangeヘッダーの仕様に基づいて、最初はこのヘッダーで応答しようとしました。2 バイトのファイル ヘッダーを送信すると、クライアントは応答の範囲を送信します。
iOS および Web ブラウザーではこれをうまく処理できますが、AndroidではヘッダーをまったくVideoView
送信しません。Range
これをどのように機能させるのVideoView
ですか?
http - 範囲ヘッダーを取得していません
Google ドライブからのアップロードを再開しようとしています。接続を閉じると、ファイルの ID が表示されます。インターネットが再び接続された後、このセッションを作成します。
Range ヘッダーを取得できません。なぜですか?
php - HTTP 範囲、ストリーミング、音楽、オーディオ
オーディオ ファイルのストリーミングに使用する Web サイトがあります。主にMP3とOGG。数ヶ月以来、私は自分自身 (PHP) を処理しています (Apache2 になる前)。最初に、マルチメディア オーディオ ファイルのスライスされたバイナリ レスポンスで通常の 200 OK レスポンスを実行します (メモリ割り当て用)。正常に動作していますが、すべてのオーディオで無限の持続時間を取得しました。この質問によると、昨日ストリーミング部分を更新しました。
そして今、私は想像できる最も奇妙なバグの 1 つを持っています。私のコードのリファクタリングは、MP3 ではうまく動作しますが、OGG ではうまく動作しません... 画像、または zip ダウンロードも上記のクラスで動作し、どちらも以前と同じように動作します。
これが私のストリームクラスです。
私は HTTP_RANGE と少し混乱しています。ありがとうございました、