rtp로 받은 jpeg이미지 파일에 대해서 질문올립니다.

콩수니의 이미지

안녕하세요
rtp에 대해서 공부중인데요

rtp프로토콜을 이용하여 jpeg 이미지를 받으려고 합니다
실제 받으려고 하는건 영상인데요

패킷분석프로그램으로 패킷을 주고 받는것을 보았는데
RTP두개에 정보가 넘어오고 그다음 JPEG 이미지가 한 21개가 전송되어 옵니다
파일 크기는 20개는 1456이고 마지막 하나는 854크기로 오네요 아마도 마지막 이미지 파일이기 때문이라고 생각됩니다

이렇게 받은 이미지파일을 실제로 완성해서 눈으로 보고싶은데요
받은 바이트 코드만 연결해서 단순히 출력하면 안됩니다.ㅠ
21개에 패킷에 구조를 보면
물론 앞에 자잘한 헤더를 잘라내고
RTP 와 RFC 2435 JPEG
이 두개가 있습니다.
또 RFC 2435 JPEG에 페이로드가 실제 이미지 라고 생각되는데 어떤 식으로 연결을 해야 이미지를 볼수있을까요?

gilgil의 이미지

RTP header + (Video Header) + Video Payload

RTP header는 RFC1889문서 보면 되구요,
Video Header는 프로토콜이나 장비에 따라 옵셥이구요(없는 경우가 많음),
Video Payload는 그냥 말 그대로 Payload... 나중에 합치면 바이트 스트림(jpeg)이 됩니다.
(jpeg 컨텐츠는 보통 "JFIF"로 시작이 됨)

그런데 질문의 요지가 무엇인가요?
Payload 시작 위치 알아 내는 방법?
버퍼 합치는 방법?
파일로 떨구는 방법?

콩수니의 이미지

답변 감사드립니다

그럼 패킷을 받아와 21개에 페이로드를 이어서 쭉 붙이고 이것을 표현해내면 그림을 볼수있는건가요?

devband

gilgil의 이미지

해당 장비에서 jpeg stream을 어떻게 쏴 주는지 제가 직접 파악해 보지 못하는 상황에서 정확히 말씀드릴 수는 없겠죠.
직접 한번 해 보세요. 일단 들어오는 payload 데이터를 파일로 떨궈(write) 본 다음에 나중에 그 파일을 열어 보세요.

콩수니의 이미지

자바기때문에 다음과같이 받았습니다
byte[] w = new byte[1024];
input.read(w);

이러면 하나의 패킷내용이 w에 저장이되자나요
그래서 이걸 가지고 자르면되는데
w를 화면에 출력해서 확인하려고 하는데 잘안되네요
문자열로 변환해서 보면 ???로 나와버리네요
저는 00 42 a0 30 c0 이런식으로 헥사값으로 보고싶은데요.ㅠ
흑흑..

devband

gilgil의 이미지

일단 파일로 떨궈 보세요(fwrite 이용해서).
java로 버퍼 처리하는 건 잘 모르겠군요.

shint의 이미지

받은 데이터를 링버퍼에 넣습니다.
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

익명 사용자의 이미지

책에 나오는 내용이랑 똑같은거 같은데...

만약 그렇다면 추가해야할 함수는 없고 코드만 추가하면 되는 걸로 알고

있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.