2012-01-21 4 views
1

최근에 컨퍼런스 애플리케이션을 마쳤습니다. 사람들은 서로 이야기하고 지켜 볼 수 있습니다. 따라서 웹캠 (DirectShow 라이브러리)에서 이미지 (JPEG로 변환 된 버퍼의 IntPtr)를 캡처합니다. 프로그램이 LAN에서만 사용 되었기 때문에 지금은 아무런 문제가 없습니다. 하지만 인터넷 버전을 구현할 계획입니다.네트워크를 통해 전송할 때 웹캠으로 캡처 한 이미지를 압축해야합니까?

제 질문은 : JPEG 이외의 것을 사용해야합니까? 이미지 x와 이미지 x + 1을 비교하고 차이 만 보내야합니까? Motion-JPEG를 사용해야합니까? (미안하지만, 나는 motion-jpeg에 대해 아무것도 모른다. 그러나 그것은 관련이 있다고 생각한다).

답변

1

당신은 이미지가 프레임마다 거의 변하지 않는다는 것을 알고 올바른 방향으로 가고 있습니다. 그리고 일련의 jpeg를 보내는 것이 길이 아닙니다. mjpeg가 일련의 jpeg를 보내고 잘못된 선택이라고 생각합니다. 나는 C#을 사용하지 않지만, 나는 ffmpeg (비디오 압축 라이브러리)가 C# 래퍼를 만든다고 믿는다.

+0

ffmpeg를 알고 있지만 더 구체적으로 무엇을 할 수 있습니까? 기능 나는 그것을 사용해야합니까? – Matthias

+0

나는 그것을 사용하고 (그리고 나는 C를 사용하고 있었으므로) 오랜 시간이 걸렸지 만 라이브러리는 이미지 버퍼를 받아 들여 나가는 압축 된 프레임을 생성하는 기능을 가지고있었습니다. 당신은 이미지 버퍼를 공급하고 그들의 방식으로 프레임을 보냅니다. 몇 가지 좋은 예제 코드가 있습니다. http://www.google.com/url?sa=t&source=web&cd=1&ved=0CB0QFjAA&url=http%3A%2F%2Fwww.ffmpeg.org%2Fdoxygen%2Ftrunk%2Fencoding_8c-source.html&ei = fK8bT82tO6Pw0gHD_MC1Cw & usg = AFQjCNGff__Sgpr9D36OwyKzfpx-6WW74A & sig2 = DyzhGYP51RdHVgVSG0T26A – Jim

1

FFmpeg는 매우 빠르지 만 문서화가 잘되어 있지 않으며 순수한 ANSI-C입니다. 나는 당신이 이미 생각한 것처럼보다 나은 접근 방법은 이미지 x과 이미지 x-1 사이의 차이를 압축하는 것으로 생각합니다. 이것은 상당한 대역폭 절약을 제공하기에 충분해야합니다. 전체 프레임을 한 번씩 압축하거나 이전 이미지와의 차이가 특정 임계 값을 초과 할 때 전체 이미지를 압축하는 방법도 포함해야합니다.

관련 문제