使用GoLang 開發的Web 伺服器顯示靜態內容(HTML、Java、CSS 、和圖像)成功。然而,當嘗試顯示 MP4 影片時,瀏覽器無法載入它。
問題源自於視訊檔案的大小。 Chrome 會緩衝內容,但僅針對大型影片進行部分緩衝。當影片超過一定閾值時,Chrome 期望伺服器支援部分內容服務(範圍請求)。
在提供的程式碼中,自訂檔案服務實作不處理範圍請求,導致 Chrome 拒絕播放影片。
要解決此問題,請使用 http.ServeFile() 來提供視訊檔案。 http.ServeFile() 會自動處理 Range 要求並設定適當的回應標頭,包括 Content-Type 和 Accept-Ranges: Chrome 播放影片所需的位元組標頭。
修改提供的程式碼如下:
<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中文網其他相關文章!