如何使用C程序直播video。 什么应该是HTTP回复? 如果可能,我如何使用分块编码?

(实际问题已被编辑,因为我成功地进行了直播,但现在我不理解客户端和我的C代码之间的通信。)

好吧,我终于使用我的C代码进行直播。 但我不能理解“HTTP”是如何在这里工作的。 我使用wireshark在链接http://www.flumotion.com/demosite/webm/上研究了我的浏览器和服务器的通信。

我发现客户端首先发送此GET请求

GET /ahiasfhsasfsafsgfg.webm HTTP/1.1 Host: localhost Connection: keep-alive Referer: file:///home/anirudh/Desktop/anitom.html User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13 Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Range: bytes=0-1024 

对于此获取请求,服务器通过发送此回复来响应

 HTTP/1.0 200 OK Date: Tue, 01 Mar 2011 06:14:58 GMT Connection: close Cache-control: private Content-type: video/webm Server: FlumotionHTTPServer/0.7.0.1 

然后服务器发送数据,直到客户端断开连接。 客户端在收到一定数量的数据时会断开连接。 然后,CLIENT在新端口上连接到服务器,并将相同的GET请求发送到服务器。 服务器再次给出相同的回复,但这次客户端不会断开连接,而是连续读取数据包,直到服务器断开连接。 我写了一个C代码,其中我有一个服务器套接字,它复制了上述行为。 (感谢wireshark,flumotion和stackoverflow)

但是但是,我无法理解为什么客户端需要发送两个请求,为什么它会在第一个请求上重置并再次在新端口上发送相同的请求,这次它会监听数据,好像它正在实时流式传输。 此外,我不知道如何使用分块编码实时流。

这里有相同的细节: http : //systemsdaemon.blogspot.com/2011/03/live-streaming-video-tutorial-for.html

在这里http://systemsdaemon.blogspot.com/2011/03/http-streaming-video-using-program-in-c.html

请帮帮我。 提前致谢。

第一个请求限制为1024个字节,以便测试流实际上是有效的video源,而不是说600MB的Windows可执行文件。