RTSP 스트리밍 재생에 관련된 질문입니다.
안녕하세요.
현재, C++ 기반으로 RTSP 스트리밍 서버를 구축중입니다.
타겟이 되는 파일은 flv만 지원을 하며,
지금까지 구축하고 테스트한 것은, 여러가지 과정을 거쳐 flv를 전송가능한 TS 패킷으로 만들었습니다.
생선된 TS파일은 로컬에서 VLC플레이어로 파일재생을 하면 문제없이 플레이가 됩니다.
다만, 이 TS패킷을 "RTSP 서버 > VLC 클라이언트"로 스트리밍 패킷을 보낼때에 문제가 발생했습니다.
VLC에서 TCP로 OPTION, DESCRIBE, PLAY ... 같은 과정으로 재생 요청을 하니 RTSP 서버에서
UDP로 패킷을 전송해주고 있는데 VLC 클라이언트에서 재생이 되기는 하나, 재생 배속이 너무 빠릅니다.
RTSP서버에서는 단순하게 패킷을 UDP로 interval 없이 무조건 Send해주고 있습니다.
혹시나 해서 Send 주기를 1초 정도 주었더니, VLC 클라이언트에서는 현저하게 느리게 재생이 됩니다.
TimeStamp에 문제가 있나싶어 flv에서 뽑아온 TimeStamp값도 확인을 하였고, RTSP 서버에서 생성하는
RTP TimeStamp도 확인을 하였습니다. 값들은 정상적으로 판단이 됩니다.
이 상황에 대해서 RTSP에 관해 지식을 공유해주셨으면 감사하겠습니다.
UDP 패킷을 보내는 interval이 재생속도와 관련이 있을까요? 개인적인 생각은 VLC 클라이언트 내부적으로
들어오는 패킷을 쌓아두고 있다고 생각하면 속도에 영향은 없지 않을까 싶은데...
제 생각이 맞다면, 어느 부분을 의심해 보아야 할까요??
서버의 세션 제어 부분을 검토하고, 컨텐츠의
서버의 세션 제어 부분을 검토하고, 컨텐츠의 timestamp를 확인해보십시요.
스트리밍 서버는 스트리밍 세션을 제어(congestion control, flow control 등)를 해야 합니다.
네트워크와 플레이어의 자원이 유한하다는 것을 상기하면 됩니다.
플레이어는 timestamp를 보고 디코딩과 출력의 시간을 결정함으로 혹시 timestamp가 잘못 되었는지도 의심해봐야겠습니다.
내 블로그: http://unipro.tistory.com
답변 감사합니다. 정확히 VLC가 어떤식으로
답변 감사합니다.
정확히 VLC가 어떤식으로 돌아가는지 파악이 어렵네요.
지금 확인해보니, 스트리밍 재생 시 Time이 00:00:00 에서 시작되지 않고 마지막부터 시작이 되네요.
5:14:00 부터 시작해서 점점 - 되면서 화면이 점프하고, 잠시 잘 재생될때는 Time이 + 되는데..
이때 UDP Send 주기를 Sleep(10)을 주니 점프 간격은 줄어들구요... Sleep안주면 점프구간이 크네요..
아...
댓글 달기