首頁  >  文章  >  後端開發  >  為什麼我的 GoLang 網路伺服器無法在 Chrome 中播放 MP4 影片?

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

Susan Sarandon
Susan Sarandon原創
2024-11-02 11:27:02328瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn