如何在HTTP响应中使用Content_type: video/mp2t?
我正在准备一个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请求,要求获取特定的字节范围。根据这些请求的字节范围来准备响应,解决了这个问题。