rtp로 받은 jpeg이미지 파일에 대해서 질문올립니다.
글쓴이: 콩수니 / 작성시간: 월, 2012/02/13 - 12:41오후
안녕하세요
rtp에 대해서 공부중인데요
rtp프로토콜을 이용하여 jpeg 이미지를 받으려고 합니다
실제 받으려고 하는건 영상인데요
패킷분석프로그램으로 패킷을 주고 받는것을 보았는데
RTP두개에 정보가 넘어오고 그다음 JPEG 이미지가 한 21개가 전송되어 옵니다
파일 크기는 20개는 1456이고 마지막 하나는 854크기로 오네요 아마도 마지막 이미지 파일이기 때문이라고 생각됩니다
이렇게 받은 이미지파일을 실제로 완성해서 눈으로 보고싶은데요
받은 바이트 코드만 연결해서 단순히 출력하면 안됩니다.ㅠ
21개에 패킷에 구조를 보면
물론 앞에 자잘한 헤더를 잘라내고
RTP 와 RFC 2435 JPEG
이 두개가 있습니다.
또 RFC 2435 JPEG에 페이로드가 실제 이미지 라고 생각되는데 어떤 식으로 연결을 해야 이미지를 볼수있을까요?
Forums:
gilgil.net
RTP header + (Video Header) + Video Payload
RTP header는 RFC1889문서 보면 되구요,
Video Header는 프로토콜이나 장비에 따라 옵셥이구요(없는 경우가 많음),
Video Payload는 그냥 말 그대로 Payload... 나중에 합치면 바이트 스트림(jpeg)이 됩니다.
(jpeg 컨텐츠는 보통 "JFIF"로 시작이 됨)
그런데 질문의 요지가 무엇인가요?
Payload 시작 위치 알아 내는 방법?
버퍼 합치는 방법?
파일로 떨구는 방법?
www.gilgil.net
그러면~
답변 감사드립니다
그럼 패킷을 받아와 21개에 페이로드를 이어서 쭉 붙이고 이것을 표현해내면 그림을 볼수있는건가요?
devband
아마도 그렇겠죠.
해당 장비에서 jpeg stream을 어떻게 쏴 주는지 제가 직접 파악해 보지 못하는 상황에서 정확히 말씀드릴 수는 없겠죠.
직접 한번 해 보세요. 일단 들어오는 payload 데이터를 파일로 떨궈(write) 본 다음에 나중에 그 파일을 열어 보세요.
www.gilgil.net
한가지만 더도와주세요
자바기때문에 다음과같이 받았습니다
byte[] w = new byte[1024];
input.read(w);
이러면 하나의 패킷내용이 w에 저장이되자나요
그래서 이걸 가지고 자르면되는데
w를 화면에 출력해서 확인하려고 하는데 잘안되네요
문자열로 변환해서 보면 ???로 나와버리네요
저는 00 42 a0 30 c0 이런식으로 헥사값으로 보고싶은데요.ㅠ
흑흑..
devband
음...
일단 파일로 떨궈 보세요(fwrite 이용해서).
java로 버퍼 처리하는 건 잘 모르겠군요.
www.gilgil.net
캠으로 jpeg 받는걸 해본적은 있는데요.
받은 데이터를 링버퍼에 넣습니다.
jpeg 헤더를 찾습니다.
읽을 수 있을 만큼의 크기로 자릅니다. (크기를 알면. 크기만큼 자르고. 모르면. 다음 헤더'전까지를 자릅니다.)
잘라진 데이터를 (저는 인텔 임베디드용) jpeg lib에 넣습니다.
bitmap으로 변환해서 화면에 출력하거나. 파일로 저장합니다.
그때 당시 저런 헤더를 사용했었네요. 무슨 기준으로 저렇게 만들었는지... 저도 궁금합니다. ㅡ_ㅡ;;;
if((ring->m_cpMemory[ring->m_nOffSet_Picture] == 0x08) && (ring->m_cpMemory[ring->m_nOffSet_Picture+1] == 0x12))
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
컴퓨터 네트워킹 -하향식 접근 -
책에 나오는 내용이랑 똑같은거 같은데...
만약 그렇다면 추가해야할 함수는 없고 코드만 추가하면 되는 걸로 알고
있습니다.
댓글 달기