GoLang Web 伺服器串流影片
GoLang Web 伺服器串流影片
GoLang Web 伺服器串流影片
問:Golang Web 伺服器設定為服務HTML、CSS、JavaScript 和映像失敗嘗試串流式傳輸MP4 視訊。if contentType == "video/mp4" {
size := binary.Size(data)
if size > 0 {
requestedBytes := r.Header.Get("Range")
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)
}
}
此問題是由於處理大型視訊檔案而引起的。 Chrome 要求伺服器支援超過一定大小的影片的 Range 請求,但提供的程式碼並沒有解決這個問題。透過實現範圍請求支持,伺服器可以僅發送視訊的請求部分,從而實現播放。 if contentType == "video/mp4" {
http.ServeFile(w, r, path)
}
修改用於檢查 MP4 檔案並發送適當的標頭和回應代碼的代碼:
if contentType == "video/mp4" { 大小 := 二進位.Size(資料) 如果大小 > 0 { requestBytes := r.Header.Get("範圍") w.Header().Add("接受範圍", "位元組") w.Header().Add("內容長度", strconv.Itoa(size)) w.Header().Add("內容範圍", "位元組" requestBytes[6:len(requestedBytes)] strconv.Itoa(size-1) "/" strconv.Itoa(size)) w.WriteHeader(206) } }此外,請考慮使用 http.ServeFile() 來提供視訊文件,它支援範圍請求:
if contentType == "video/mp4" { http.ServeFile(w, r, 路徑) }
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3