ホームページ  >  記事  >  バックエンド開発  >  Go Web サーバーで MP4 ビデオを再生できないのはなぜですか?

Go Web サーバーで MP4 ビデオを再生できないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 23:28:28799ブラウズ

Why Can't My Go Webserver Play MP4 Videos?

Go Web サーバーから MP4 ビデオを提供する問題

カスタムメイドの Go Web サーバーで、MP4 ビデオを表示しようとすると空白になるHTML ファイルを直接開いた場合は正しく再生されるにもかかわらず、Web サイト上のビデオ画面が表示されません。

解決策

問題はビデオ ファイルのサイズに関連していました。 Chrome はビデオの再生にバッファを使用し、ビデオがバッファ サイズを超える場合、サーバーが部分的なコンテンツの提供 (範囲リクエスト) をサポートすることを期待します。ただし、元の Go コードにはこのサポートがありませんでした。

実装

この問題を解決するために、作成者は 2 つのメソッドを実装しました:

  • A部分的なコンテンツ提供のためのカスタム メソッド (コメントアウト)
  • 範囲リクエストをサポートする 'http.ServeFile()' メソッドの使用

カスタム メソッド

カスタム メソッドは、応答に次のヘッダーを追加しました:

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。