首頁 > 後端開發 > Golang > 主體

為什麼我的 GoLang 網路伺服器無法在 Chrome 中播放 MP4 影片?

Susan Sarandon
發布: 2024-11-02 11:27:02
原創
397 人瀏覽過

Why can't my GoLang webserver play MP4 videos in Chrome?

使用GoLang HTTP Web 伺服器提供視訊(MP4)

問題

使用GoLang 開發的Web 伺服器顯示靜態內容(HTML、Java、CSS 、和圖像)成功。然而,當嘗試顯示 MP4 影片時,瀏覽器無法載入它。

診斷

問題源自於視訊檔案的大小。 Chrome 會緩衝內容,但僅針對大型影片進行部分緩衝。當影片超過一定閾值時,Chrome 期望伺服器支援部分內容服務(範圍請求)。

在提供的程式碼中,自訂檔案服務實作不處理範圍請求,導致 Chrome 拒絕播放影片。

解決方案

要解決此問題,請使用 http.ServeFile() 來提供視訊檔案。 http.ServeFile() 會自動處理 Range 要求並設定適當的回應標頭,包括 Content-Type 和 Accept-Ranges: Chrome 播放影片所需的位元組標頭。

使用 http.ServeFile()

修改提供的程式碼如下:

<code class="go">func (vh *viewHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    path := r.URL.Path[1:]
    log.Println(path)
    if contentType == "video/mp4" {
        http.ServeFile(w, r, path)
    } else {
        data, err := ioutil.ReadFile(string(path))
        if err == nil {
            w.Header().Add("Content-Type", contentType)
            w.Write(data)
        } else {
            log.Println("ERROR!")
            w.WriteHeader(404)
            w.Write([]byte("404 - " + http.StatusText(404)))
        }
    }
}</code>
登入後複製

此實作將正確提供 MP4 視頻,確保它們可以在 Chrome 中播放。

以上是為什麼我的 GoLang 網路伺服器無法在 Chrome 中播放 MP4 影片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板