2010-12-04 32 views
0

Je prépare une réponse à une requête HTTP pour envoyer la vidéo et la réception de l'erreur: Broken Pipecomment utiliser Content_type, video/mp2t dans la réponse http?

if self.path.endswith(".ts"): 
    f = open("filename.ts", 'r') 
    self.send_response(200) 
    self.send_header('Content-Type', "video/mp2t") 
    self.end_headers() 
    self.wfile.write(f.read()) 
    return 

Réponse ci-dessous fonctionne même très bien. Je soupçonne qu'il est lié à un problème de type mimé. Quelqu'un peut-il me suggérer comment puis-je utiliser video/mp2t avec baseHttpServer ??

+0

Et encore une fois, vous devinez au hasard que "tuyau cassé" vient du type MIME? Vous avez déjà posé une autre question à ce sujet. Si vous venez de demander "Qu'est-ce qu'une erreur de tuyau cassé?" les gens vous donneraient de meilleures réponses. – AndiDog

+0

Je ne devine pas au hasard. Content-Type, la vidéo/mpeg fonctionne où Content-Type, video/mp2t ne fonctionne pas et je pense que le tuyau cassé est une erreur plus généralisée. L'erreur réelle qui m'a poussé à deviner à propos de mimetypes est ERREUR: 404: Contenu non trouvé – neuron

Répondre

0

Dans le contexte de mpeg2ts, le client (Quicktime dans le navigateur) demande des plages d'octets spécifiques dans plusieurs requêtes GET. la préparation de la réponse selon les plages d'octets demandées a corrigé le problème.

+0

J'ai aussi ce problème. Pouvez-vous élaborer sur la façon dont vous l'avez résolu? –

1

Très bien, je vais essayer. "Broken pipe" du côté serveur signifie généralement que le client ferme la connexion pendant que le serveur envoie des données. À partir de votre question précédente, je suppose que votre client est un navigateur (utilisant la balise <video>). Cela signifie très probablement que le navigateur ne supporte pas la lecture des flux de transport MPEG. En fait, je n'ai entendu parler d'aucun navigateur qui le supporte. Peut-être que vous devriez essayer de diffuser une vidéo Ogg Theora (type MIME "video/theora") pour les tests - Firefox 3.1+ prend en charge ce hors de la boîte. Si cela fonctionne, l'implémentation de votre serveur est correcte.

+0

voici plus d'informations: Je pourrais lire le fichier ts avec la balise vidéo sur le côté client avec safari. La seule différence est: dans mon scénario de réussite, j'utilisais Apache comme serveur web et moddied httpd.conf pour ajouter une ligne, AddType video/MP2T .ts – neuron

+0

Je suis en train de comprendre pourquoi mon baseHttpServer ne peut pas reconnaître mimetype, video/mp2t et essayer d'ajouter à cela. – neuron

+0

@neuron: 'BaseHTTPServer.send_header' ne limite en aucune façon la valeur de l'en-tête. Ce que vous avez spécifié sera envoyé au client tel quel. Peut-être que les types MIME sont sensibles à la casse? Essayez "video/MP2T" dans votre code Python. Ou vérifiez la différence entre Apache et votre solution avec Wireshark. – AndiDog