如何在HTTP响应中使用Content_type: video/mp2t?

0 投票
2 回答
6495 浏览
提问于 2025-04-16 08:01

我正在准备一个HTTP请求的响应,用来发送视频,但遇到了一个错误:Broken Pipe。

 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

我怀疑这个问题和文件类型有关。有没有人能告诉我怎么在baseHttpServer中使用video/mp2t?

2 个回答

1

好的,我来试试解释一下。“Broken pipe”这个错误通常出现在服务器端,意思是客户端在服务器还在发送数据的时候就关闭了连接。从你之前的问题来看,我猜你的客户端是浏览器(使用了<video>标签)。这很可能意味着你的浏览器不支持播放MPEG传输流。其实我还没听说过哪个浏览器支持这个格式。

也许你可以试着播放一个Ogg Theora格式的视频(MIME类型是“video/theora”)来测试一下——Firefox 3.1及以上版本是直接支持这个格式的。如果这个能正常播放,那说明你的服务器设置是正确的。

0

在mpeg2ts的情况下,客户端(比如浏览器里的Quicktime)会发出多个GET请求,要求获取特定的字节范围。根据这些请求的字节范围来准备响应,解决了这个问题。

撰写回答