2011-03-01 4 views
2

(실제 질문은 내가 라이브 스트리밍에 성공했기 때문에 편집되었지만 클라이언트와 내 C 코드 사이의 통신을 이해하지 못합니다.)C 프로그램을 사용하여 비디오를 스트리밍하는 방법. HTTP 응답은 무엇이되어야합니까? 가능한 경우 청크 분할 인코딩을 어떻게 사용할 수 있습니까?

좋아요. 마지막으로 C 코드를 사용하여 실시간 스트리밍을했습니다. 그러나 "HTTP"가 어떻게 작동하는지 나는 알지 못한다. wireshark를 사용하여 http://www.flumotion.com/demosite/webm/ 링크에서 내 브라우저와 서버 간의 통신을 연구했습니다.

나는 클라이언트가 먼저 서버가 클라이언트 연결을 끊을 때까지이 응답

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 요청

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 

를 보내는 발견 . 클라이언트는 일정량의 데이터를 수신하면 연결을 끊습니다. 그러면 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

저를 도와주세요. 미리 감사드립니다.

답변

0

첫 번째 요청은 스트림이 실제로 유효한 비디오 소스이고 600MB Windows 실행 파일이 아닌지 테스트하기 위해 1024 바이트로 제한됩니다.

관련 문제