directshow 영상,사운드동기에 대해 질문드립니다..

프로그래밍 일반에 관한 포럼입니다.

Moderator: 류광

Locked
비회원

directshow 영상,사운드동기에 대해 질문드립니다..

Post by 비회원 »

directshow로 화면과 사운드를 캡쳐하여 전송하여 보여주고있습니다.

필터에서 화면을 캡쳐하고 필터송신큐에 저장한다음 서버가 큐에서 데이터를 꺼내 전송 클라이언트는 수신하여

데이터를 수신 소스필터큐에 넣어주고있습니다.


그런데 영상과 사운드의 동기화가 전혀 되지를 않고 있습니다.

처음 잠깐만 되다가 그 이후부터는 각자 따로 놀고있습니다.

특히 영상 버퍼링시 그 차이는 점점 더 심해 집니다.

영상이나 사운드의 버퍼가 일정수치 이상 비었을경우 필터를 블로킹

시켜서 더이상 출력 되지 않게 하고있습니다.


두개를 어떻게 비교하여 동기화 시켜주어야 할것같은데 감이 도무지 안잡혀서 글을 써봅니다..

도움좀 부탁드리겠습니다 꾸벅..
chadr
Posts: 980
Joined: 2003-06-01 12:28
Location: 모대학
Contact:

Post by chadr »

디코딩된 영상과 음성을 따로따로 그냥 캡쳐해서 보내주면 동기화를 할 수 없습니다. 중간중간 동기화를 할 수 있는 데이터를 보내줘야합니다.

그냥 raw한 동영상 파일을 전송하고 이를 클라이언트에서 디코딩 한다면 상관이 없습니다. 원래 동영상은 자체적으로 동기화를 위한 방법이 되어있고 필터가 알아서 이에 맞춰 디코딩을하고 재생을 하니까요.

그런데 이미 디코딩된 데이터는 그런게 전혀 없습니다. 따라서 질문자님껫서 적절히 알아서 동기화를 할 수 있는 포맷을 구상하셔야합니다.

방법으로는 서버에서 디코딩후 캡쳐 할 때 시퀸스 넘버와 같은 번호로 캡쳐 프레임을 기록 하시고 이를 클라이언트에게 보내줍니다. 클라이언트는 쌍을 이루는 영상과 음성 프레임이 도착할 때까지 재생을 미루다가 두 쌍이 도착하면 그때 재생을 합니다. 이를 원활하게 부드럽게 하기 위해서는 버퍼링이 필수 이겠지요.

이런 식으로 직접 동기화를 해주시면 됩니다.
Locked