관리 메뉴

KorSA

영상 Delay 이슈 본문

Development Experience/Video Streaming

영상 Delay 이슈

Praiv. 2020. 8. 26. 18:06
320x100

[ 증상 ]

회사 프로그램에서 RTSP 영상을 렌더링하고 있었는데 특정 컴퓨터에서 영상이 지연되는 현상이 발생하였다.

플레이 시간이 길어질수록 VLC로 받은 영상 화면과 회사 프로그램에서 받은 영상 화면과의 시간 차가 점점 더 벌어졌다.

처음엔 두 프로그램 모두 비슷한 영상 화면을 보여주었는데, 점점 회사 프로그램의 영상 화면이 뒤늦게 플레이되고 있었다.

 

[ 원인 ]

회사 프로그램에서 렌더링을 하기 위한 frame queue를 만들어서 수신한 frame들을 관리하는데,

이 frame queue에 frame이 너무 많이 쌓인 게 원인이었다.

즉, queue에서 frame을 Pop 하는 속도보다 Push 하는 속도가 더 빨랐던 것이다.

이러한 이유로 queue에는 처리되지 못한 frame들이 점점 쌓여갔고, queue에 frame이 많으면 많을수록 가장 최근에 수신된 frame은 더 늦게 처리되는 것이었다.

 

[ 해결 ]

queue에서 Push와 Pop 하는 속도를 맞추는 것도 한 방법이지만, 회사에서는 queue에 frame이 일정 개수만큼 찼을 때, frame 몇개를 선별적으로 버리는 방식을 선택하였다. 여기서 선별적으로 선택하는 이유는 일정 구간의 frame을 몰아서 버릴 경우 영상 끊김이 더 두드러지게 보이기 때문이다.

 

[ 참고 ]

영상 스트리밍에서 frame의 읽고 쓰는 속도의 싱크를 잘 맞추는 게 중요함을 알았다.

Pop 속도가 Push 속도보다 빠를 경우 영상이 뚝뚝 끊겨보이는 현상이 나타나고,

Pop 속도가 Push 속도보다 느릴 경우 영상이 지연된 현상이 나타난다.

728x90
728x90

'Development Experience > Video Streaming' 카테고리의 다른 글

영상 frame 관리  (0) 2020.12.15
Bitmap Create / Draw 시 lock을 걸 때  (0) 2020.08.26
MSDN WIC 의 Pixel Format 정리  (0) 2020.04.22
Comments