【问题标题】:How to live stream video using C program. What should be the HTTP reply ? How can I use chunked encoding if possible?如何使用 C 程序直播视频。 HTTP 回复应该是什么?如果可能,我如何使用分块编码?
【发布时间】:2026-01-27 15:10:01
【问题描述】:

(实际问题已被编辑,因为我成功地进行了直播,但现在我不了解客户端和我的 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

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

但是但是,我不明白为什么客户端需要发送两个请求,为什么它会在第一个请求时重置并再次在新端口上发送相同的请求,这一次它监听数据就好像它的进行直播。 另外我不知道如何使用分块编码进行直播。

这里有同样的细节: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

请帮帮我。提前致谢。

【问题讨论】:

    标签: c http streaming video-streaming live-streaming


    【解决方案1】:

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

    【讨论】:

      最近更新 更多