Go Web サーバーから MP4 ビデオを提供する問題
カスタムメイドの Go Web サーバーで、MP4 ビデオを表示しようとすると空白になるHTML ファイルを直接開いた場合は正しく再生されるにもかかわらず、Web サイト上のビデオ画面が表示されません。
解決策
問題はビデオ ファイルのサイズに関連していました。 Chrome はビデオの再生にバッファを使用し、ビデオがバッファ サイズを超える場合、サーバーが部分的なコンテンツの提供 (範囲リクエスト) をサポートすることを期待します。ただし、元の Go コードにはこのサポートがありませんでした。
実装
この問題を解決するために、作成者は 2 つのメソッドを実装しました:
カスタム メソッド
カスタム メソッドは、応答に次のヘッダーを追加しました:
<code class="go">w.Header().Add("Accept-Ranges", "bytes") w.Header().Add("Content-Length", strconv.Itoa(size)) w.Header().Add("Content-Range", "bytes " + requestedBytes[6:len(requestedBytes)] + strconv.Itoa(size - 1) + "/" + strconv.Itoa(size)) w.WriteHeader(206)</code>
これは、サーバーが部分的なコンテンツの提供をサポートしていることを Chrome に示しました。
http.ServeFile()メソッド
「http.ServeFile()」メソッドは、Range リクエストの組み込みサポートを提供することでプロセスを簡素化します。適切な応答ヘッダーの設定を処理し、部分的なコンテンツの提供を処理します。
結論
ビデオの再生ではどちらのメソッドも機能しましたが、'http.ServeFile()'範囲リクエストや MIME タイプなど、コンテンツ提供のさまざまな側面を処理するため、より実用的です。最終的に、サーバーが部分的なコンテンツの提供をサポートし、Chrome が大きなビデオを効率的にバッファリングして再生できるようにすることで、この問題は解決されました。
以上がGo Web サーバーで MP4 ビデオを再生できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。