Maison  >  Article  >  développement back-end  >  Pourquoi mon serveur Web GoLang ne peut-il pas lire les vidéos MP4 dans Chrome ?

Pourquoi mon serveur Web GoLang ne peut-il pas lire les vidéos MP4 dans Chrome ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 11:27:02328parcourir

Why can't my GoLang webserver play MP4 videos in Chrome?

Fournir une vidéo (MP4) à l'aide du serveur Web HTTP GoLang

Le problème

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 diagnostic

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.

La solution

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.

Utilisation de http.ServeFile()

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn