Heim >Backend-Entwicklung >Golang >Warum kann mein Go-Webserver keine MP4-Videos abspielen?

Warum kann mein Go-Webserver keine MP4-Videos abspielen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 23:28:28908Durchsuche

Why Can't My Go Webserver Play MP4 Videos?

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:

  • A Benutzerdefinierte Methode für die teilweise Bereitstellung von Inhalten (auskommentiert)
  • Verwendung der Methode „http.ServeFile()“, die Bereichsanfragen unterstützt

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn