2011-08-08 5 views
0

두 개의 클라이언트가 웹캠을 통해 대화 할 수있게 해주는 java로 응용 프로그램을 작성하고 싶습니다. 작동 방식은 클라이언트가 지정된 프레임 속도 (초당 20 프레임)로 사진을 찍은 다음 크기와 해상도를 줄인 다음 웹캠에 연결 한 다음 UDP 패킷을 통해 다른 클라이언트로 보냅니다. 제 질문은 - 모든 사진을 자체 데이터 그램 패킷으로 보내야합니까? 나는 그들이 단지 0.5 킬로바이트 만 가질 수 있다는 것을 읽었습니다. 그래서 모든 사진이 그만큼 줄여야합니까? 아니면 여러 개의 패킷으로 분할해야합니까?UDP를 통해 사진 보내기

+0

UDP 데이터 그램은 최대 64K를 전송할 수 있습니다. 그러나 하위 레이어 2 (이더넷)에 따라이 데이터 그램은 많은 IP 조각으로 나뉩니다. 조각난 패킷은 수신 호스트에서 다시 어셈블되지만 조각 중 하나가 손실되면 모든 UDP 패킷이 손실됩니다. – jfg956

답변

2

업데이트해야 할 항목 만 전송하는 알고리즘/코덱을 사용하는 대신 전체 이미지를 전송 하시겠습니까?

두 번째 옵션을 선택하면 this previous question에서 몇 가지 아이디어를 얻을 수 있으며 이미 사용 중이며 테스트 된 라이브러리가 목적으로 사용됩니다. 나는 내가해야만한다면 VLC java bindings으로 갈 것이라고 생각한다. 특정 용도 (비트율, 품질 등)에 가장 적합한 코덱이 무엇인지 평가해야합니다.

그럼에도 불구하고 이미지를 전송하고 싶다면 udp 데이터 그램으로 분류 할 것을 권합니다. 클라이언트가 패킷이 올 때 이미지를 재구성 할 수 있도록 어떻게 든 번호가 매겨져 있어야합니다 (반드시 올 필요는 없습니다). 당신이 보낸 것과 같은 순서로), 또한 패킷의 일부가 도착하지 못한 경우 (이미지를 버리고 이전 패킷을 요청하는 등) 클라이언트가해야 할 일을 생각해야합니다.

udp 데이터 그램 최대 크기가 가장 좋은 옵션이 아닐 수도 있습니다. 서버 클라이언트는 알고리즘을 구현하고 전송 속도에 따라 udp 프레임 크기를 협상해야합니다.

0

비디오 스트림을 인코딩해야합니다. 네트워크 계층을 그대로두면 조각화를 할 수 있습니다.

또한 UDP를 통해 비디오를 전송하는 경우 2 초마다 키 프레임을 던질 가능성이 있습니다.

각 프레임을 자체 이미지로 보내지 마십시오. 비디오 압축기를 사용하십시오.

+0

어디에서 시작해야합니까? 나는 올바른 방향으로 지적해야한다. –

관련 문제