Ein mit GoLang entwickelter Webserver zeigt statische Inhalte an (HTML, JavaScript, CSS, und Bilder) erfolgreich. Beim Versuch, ein MP4-Video anzuzeigen, kann der Browser es jedoch nicht laden.
Das Problem ergibt sich aus der Größe der Videodatei. Chrome puffert den Inhalt, bei großen Videos jedoch nur teilweise. Wenn das Video einen bestimmten Schwellenwert überschreitet, erwartet Chrome, dass der Server die Bereitstellung teilweiser Inhalte (Bereichsanfragen) unterstützt.
Im bereitgestellten Code verarbeitet die Implementierung der benutzerdefinierten Dateibereitstellung keine Bereichsanfragen, was dazu führt, dass Chrome die Wiedergabe verweigert das Video.
Um das Problem zu beheben, verwenden Sie http.ServeFile(), um die Videodateien bereitzustellen. http.ServeFile() verarbeitet Bereichsanfragen automatisch und legt entsprechende Antwortheader fest, einschließlich der Header Content-Type und Accept-Ranges: Bytes, die Chrome zum Abspielen des Videos benötigt.
Ändern Sie den bereitgestellten Code wie folgt:
<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>
Diese Implementierung stellt MP4-Videos korrekt bereit und stellt sicher, dass sie in Chrome abgespielt werden können.
Das obige ist der detaillierte Inhalt vonWarum kann mein GoLang-Webserver keine MP4-Videos in Chrome abspielen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!