Problem beim Bereitstellen von MP4-Videos vom Go-Webserver
Auf einem maßgeschneiderten Go-Webserver führte der Versuch, ein MP4-Video anzuzeigen, zu einem leeren Ergebnis Der Videobildschirm auf der Website wurde trotz korrekter Wiedergabe beim direkten Öffnen der HTML-Datei angezeigt.
Lösung
Das Problem hing mit der Größe der Videodatei zusammen. Chrome verwendet einen Puffer zum Abspielen von Videos. Wenn das Video die Puffergröße überschreitet, erwartet es, dass der Server die Bereitstellung teilweiser Inhalte (Bereichsanforderungen) unterstützt. Dem ursprünglichen Go-Code fehlte diese Unterstützung jedoch.
Implementierung
Um das Problem zu beheben, implementierte der Autor zwei Methoden:
Benutzerdefinierte Methode
Die benutzerdefinierte Methode fügte der Antwort die folgenden Header hinzu:
<code class="go">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)</code>
Dies zeigte Chrome an, dass der Server die Bereitstellung teilweiser Inhalte unterstützt.
http.ServeFile() Methode
Die Methode „http.ServeFile()“ vereinfacht den Prozess, indem sie integrierte Unterstützung für Bereichsanforderungen bietet. Es kümmert sich um das Setzen der entsprechenden Antwortheader und kümmert sich um die teilweise Bereitstellung von Inhalten.
Fazit
Beide Methoden haben beim Abspielen des Videos funktioniert, aber „http.ServeFile()“ ist praktischer, da es verschiedene Aspekte der Inhaltsbereitstellung abdeckt, einschließlich Bereichsanfragen und MIME-Typ. Letztendlich wurde das Problem gelöst, indem sichergestellt wurde, dass der Server die Bereitstellung teilweiser Inhalte unterstützt, sodass Chrome größere Videos effizient puffern und abspielen kann.
Das obige ist der detaillierte Inhalt vonWarum kann mein Go-Webserver keine MP4-Videos abspielen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!