리눅스 데이터를 rtsp를 이용해서 서버에 올리려고 하는데요 어떻게 해야하나요?

oblab의 이미지

리눅스 데이터를 rtsp를 이용해서 서버에 올리려고 하는데요 어떻게 해야하나요?

리눅스보드에 있는 버퍼의 내용을 rtsp 를 이용해서 서버에 버퍼를 올리려고 하는데 검색을 해봐도
예시나 참고해야 할 부분을 못찾고 있는데요
경험이 있으시거나 알고계신분은 참조할만한것들좀 알려주시면 감사하겠습니다.

결론적으로 rtsp를 구현할려고 하는데요 rtsp와 rtp의 개념을 정리하던데 좀 헷갈리는것이 있는데

rtp가 rtsp를 포함하고 있는 개념인건가요? rtsp를 구현하려면 rtp(ortp)를 구현하면 된다고 하는것 같은데
이쪽으로는 경험이 없어서 자문을 구하고 싶습니다

poplinux의 이미지

ffmpeg 살펴보세요.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향

chanik의 이미지

rtsp는 제어용 프로토콜(TCP 이용)이고 rtp는 전송용 프로토콜(UDP 이용)입니다.
단순 전송만을 위해서는 rtsp가 없어도 됩니다.

예를 들어 비디오 스트림이 발생되는 기기(카메라 혹은 인코더 등)가 있고
이 기기에서 만들어지는 압축 또는 비압축 비디오 스트림을 다른 컴퓨터로 전송해야 할 상황을 가정할 때,
이 기기는 비디오 스트림을 다른 컴퓨터로 rtp 전송하기만 하면 됩니다.

그리고 수신측에서 이 스트림을 사용하려면 스트림 정보(프레임 width/height, 코덱정보, ...)가 필요한데,
이때 쓰이는 것이 sdp 프로토콜입니다. sdp 데이터는 간단한 텍스트파일 형태이며 송신측에서 생성되고
어떻게든 수신측에 미리 전달되어야 합니다. 보통은 ftp, http, 수작업 복사 등의 방식으로 전달하곤 합니다.

여기까지는 rtsp를 쓰지 않는 경우의 작동방식이고,
rtsp를 쓰게 되면 sdp 데이터 전달부터 rtsp 상에서 자동으로 이뤄지고
전송 시작/멈춤/재개/중단 등의 제어까지도 가능해집니다.

수신측에서 송신측으로 rtsp 접속을 맺고 sdp 데이터를 받아 수신준비를 하고
송신측에 데이터 전송을 시작시키는 식입니다.
(이 경우, 수신측은 rtsp 클라이언트 기능이, 송신측은 rtsp 서버 기능이 구현되어야 하죠)

rtp와 rtsp는 서로 포함관계는 아니지만, rtsp 상에 rtp를 embed 시키는 것은 가능합니다.
rtp는 단독으로 UDP 상에서 동작할 수도 있고, rtp over rtsp 형태로 TCP 상에서 동작할 수도 있다고 정리할 수 있겠네요.

oblab의 이미지

카메라에서 얻은 데이터를 스트리밍서버로 보내는데 rtp프로토콜을 이용하여 서버로 데이터를 보내고 서버에서 얻어진데이터를
컨트롤(정지,출력)하기 위해서 rtsp를 사용하여 영상을 네트워크로 보는 방식인건가요?

chanik의 이미지

저는 IP카메라의 일반적인 기능에 대해서는 모릅니다만,
보통 rtsp는 데이터의 최종소비자가 씁니다.

제가 예시한 상황은 데이터 생산자와 소비자가 일대일로 상대한다고 가정한 것이고,
말씀하신대로 스트리밍서버가 개입되는 경우에는 대략 아래와 같은 식일 것입니다.

------------        ------------       ------------
 데이터 소비자         데이터 배포자        데이터 생산자
(브라우저/플레이어)    (스트리밍서버)      (카메라/인코더등)
------------        ------------       ------------
 
                    RTP Receiver <----- RTP Sender
 
RTSP Client  <----> RTSP Server
RTP Receiver <----  RTP Sender

여기에는 순수한 기초데이터(비디오/오디오)의 흐름만 표시했으므로,
ㅇ 데이터 생산자를 제어한다든지
ㅇ 데이터 소비자가 재생할 컨텐츠를 브라우징하며 선택한다든지
하는 기능은 웹서버 등을 쓰거나 다른 프로토콜을 쓰는 등 따로 메워주어야 할 것입니다.

생산자와 배포자 사이의 망은 LAN이거나 품질을 예측/보장 가능한 망 또는 어쩔수없는 경우 인터넷이 되겠고
배포자와 소비자 사이의 망은 제한이 없겠죠 (UDP 전송이 어려운 망이라면 전송프로토콜은 RTP over RTSP를 써야만 하고요).

최초 질문하신 내용을 비춰볼 때, 스트리밍 서버는 대개 RTSP/RTP/HTTP 등 위의 필요한 기능을 다 가지고 있으므로,
질문자께서는 카메라에 RTP Sender 기능을 구축하는 것이 핵심작업인 것 같고,
앞서 다른 분께서 답변해주신 ffmpeg은 이 기능을 가지고 있으므로 참고가 될 것입니다.

oblab의 이미지

충분한 이해가 되었습니다. 답변 감사합니다

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.