Un serveur Web développé à l'aide de GoLang affiche du contenu statique (HTML, JavaScript, CSS, et images) avec succès. Cependant, lorsque vous tentez d'afficher une vidéo MP4, le navigateur ne peut pas la charger.
Le problème vient de la taille du fichier vidéo. Chrome met le contenu en mémoire tampon, mais seulement partiellement pour les vidéos volumineuses. Lorsque la vidéo dépasse un certain seuil, Chrome s'attend à ce que le serveur prenne en charge la diffusion partielle du contenu (requêtes Range).
Dans le code fourni, l'implémentation de la diffusion de fichiers personnalisée ne gère pas les requêtes Range, ce qui conduit Chrome à refuser de lire. la vidéo.
Pour résoudre le problème, utilisez http.ServeFile() pour servir les fichiers vidéo. http.ServeFile() gère automatiquement les requêtes Range et définit les en-têtes de réponse appropriés, y compris les en-têtes Content-Type et Accept-Ranges : octets nécessaires à Chrome pour lire la vidéo.
Modifiez le code fourni comme suit :
<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>
Cette implémentation diffusera correctement les vidéos MP4, garantissant qu'elles peuvent être lues dans Chrome.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!