2010-12-04 16 views
0

私はビデオを送信するために、HTTP要求に対する応答を準備し、エラーが発生します:以下の壊れたパイプhttp応答でContent_type、video/mp2tを使用する方法は?

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 

同じ応答が正常に動作します。

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

私はそれがMIMEタイプの問題に関係していると思われます。どのように私はどのように私はbaseHttpServerでビデオ/ mp2tを使用することができますか?

+0

また、「破損したパイプ」がMIMEタイプに由来することをランダムに推測していますか?あなたはすでにこれについて別の質問をしました。 「破損したパイプのエラーを意味しますか?人々はあなたに良い答えを与えるでしょう。 – AndiDog

+0

私はランダムに推測しているわけではありません。 Content-Type、video/mp2tが動作していないContent-Type、video/mpegが動作しているところで、壊れたパイプがより一般化されたエラーであると私は思っています。 404:コンテンツが見つかりません – neuron

答えて

0

mpeg2tsのコンテキストでは、複数のGET要求で特定のバイト範囲を要求するクライアント(Quicktime in Browser)。リクエストされたバイト範囲に応じてレスポンスを準備することで問題が解決されました。

+0

私もこの問題を抱えています。あなたはそれをどのように解決したかを精緻化できますか? –

1

申し訳ありませんが、私は試してみましょう。サーバー側の "Broken pipe"は、通常、サーバーがまだデータを送信している間にクライアントが接続を閉じることを意味します。以前の質問から、お客様のクライアントはブラウザであることが前提です(<video>タグを使用)。これはおそらく、ブラウザがMPEGトランスポートストリームの再生をサポートしていないことを意味します。実際に私はそれをサポートするブラウザについて聞いていない。

テスト用にOgg Theoraビデオ(MIMEタイプ "video/theora")をストリーミングするようにしてください。Firefox 3.1以降ではこれをそのまま使用できます。それが機能する場合は、サーバーの実装が正しいです。

+0

ここにはさらに詳しい情報があります:クライアント側でビデオタグ付きのtsファイルをサファリで再生できました。唯一の違いは、私の成功のシナリオでは、ApacheをWebサーバーとして使用し、httpd.confを改変してAddType video/MP2Tを追加していたことです。 – neuron

+0

私のbaseHttpServerがmimetype、video/mp2tを認識できない理由を理解していますそれに追加しようとしています。 – neuron

+0

@neuron: 'BaseHTTPServer.send_header'は決してヘッダ値を制限しません。あなたが指定したものはそのままクライアントに送られます。たぶんMIMEタイプは大文字と小文字を区別しますか?あなたのPythonコードで "video/MP2T"を試してみてください。あるいは、Apacheとあなたのソリューションの違いをWiresharkで確認してください。 – AndiDog

関連する問題