RTSP 세션 스위치 및 기타 질문입니다.

tr2vil의 이미지

안녕하세요. 저는 현재 RTSP에 관련하여 자료를 수집중입니다. 해당 프로토콜 관련해서 업무를 진행을 해야하는데요

답변 부탁드리겠습니다. 제가 의문점이 있는것들은 다음과 같습니다.

첫 번째로 RTSP 세션간에 스위칭 입니다. 여러 개의 미디어들간에 연결 설정을 해놓고 사용자의 의도에 따라

화면을 전환해 가면서 또는 시퀀스를 주고 일정 시간마다 화면을 스위칭 한다고 했을 때,

스위칭 하는 과정에서 SETUP->PLAY과정을 RTSP상에서 거치는 Negotiation이 다시 진행 된다면

약간의 시간차가 생길 것이고 이로인해 사용자 화면에는 아무런 화면/음성을 표현 못하는

공백기간이 생길 수 있다고 생각합니다. 이를 방지하기 위해선 어떤 방법이 있을수 있을지에 대한 의견을 듣고 싶습니다.

제가 혼자 생각한 바로는 연결을 가질 모든 미디어 데이터에 SETUP과정을 거친후 현재 관심있는 화면이 아닌

화면에 대하여 PAUSE를 해놓고 화면 변환요청이 들어왔을 때 PLAY로 바꾸는방법을 생각해 봤는데요

실제로 어떻게 될지에 대한 의견부탁드리겠습니다.

또 두번째 질문입니다. 아직 많은 자료를 접하지는못했지만 RFC등을 봤을 때 Audio/Video등에 대하여

따로 연결 설정을 하고 각각을 PLAY하는 모습을 볼 수 있었습니다.

모든 데이터 들이 저렇게 음성/영상을 따로 관리 않할수도 있다고 보여지는데요. 예를들어 음성/영상이

하나로 묶여 있는 Container file이라고 하나요? 암튼 그런 데이터가 서버에 있을 경우

이는 어떤식으로 네고를 하고 PLAY를 하는지에 대해 궁금합니다.

마지막 세번째로 Method들 중에 GET_PARAMETER // SET_PARAMETER가 있는데요,

RFC상에서 보았을 때 이는 약간 느슨하게 정의되어 있고 추후 정의하여 사용하다 라는 문구를 봤습니다.

특히 SET_PARAMETER에서 Set 할 수 있는 값은 어떤 것 들이 있으며, 제가 해석한 바로는

그냥 개발자가 정의하여 Set-Get연산을 만들수 있을 것 처럼 보이는데

제가 생각한게 맞는 것 인지 의견을 좀 부탁드리겠습니다.

그럼 답변 기다리겠습니다. 부탁드려요.

tr2vil의 이미지

제발 답변좀 ㅠㅠ

unipro의 이미지

첫번째) 일반적으로 세션의 정보가 변경되면 ANNOUNCE를 사용하여 플레이어에게 알리도록 되어 있습니다. ANNOUNCE는 SETUP의 응답과 같이 재생에 필요한 정보들 (코덱, 페이로드 등)을 알려주어서 플레이어가 올바르게 대처가 가능하도록 합니다. (예를 들어, H.264의 중요 정보는 데이타 전송 채널이 아니라 신뢰성 있는 채널(보통 SDP)로 분리하여 전송합니다. 왜냐하면 데이타 전송 채널은 UDP를 사용할 수 있어서 손실될 수 있고, 중요한 데이터의 손실은 큰 문제를 발생하기 때문입니다.)
전송 데이터에 재생 정보가 포함되는 경우(아마도 MPEG-TS ?)는 ANNOUNCE 같은 절차를 거치이 않다도 플레이어에서 잘 대처하는 것 같습니다.
(RTSP, RTP/RTCP, SDP, 그리고 코덱이 따른 RTP 문서를 참고하세요)

두번째) 그부분은 RTSP이기 때문이기 보다는 RTP를 데이타 전송 프로코톨로 쓰기 때문입니다. RTP는 채널당 하나의 세션을 사용하는게 보통입니다. 만약에 MPEG2-TS 를 사용한다면 하나로 먹싱된 스트림을 전송할 것입니다.
컨테이너에 영상/음성이 같이 있기는 하지만, 논리적으로 오디도(#숫자) 트랙과 비디오(#숫자) 트랙이 구분되어 있습니다. 따라서 논리적으로 분리되어 있다고 보셔도 무방합니다. 다만 트랙의 정보나 영상/음성 동기 정보들이 있어서 재생에 도움을 줄 따름입니다.
이런 영상/음성 정보를 바탕으로 재생시에 네고를 수행한다고 보면 됩니다. 특히 MPEG-4 파일 시스템은 이런 것을 처리하기에 매우 잘 설계된 컨테이너입니다.
(MPEG-4의 힌팅에 관하여 알아보세요)

세번째) 맞습니다. 예를들어, GET_PARAMETER // SET_PARAMETER 의 가장 간단한 사용은 Heartbeat 이며, 이는 RTSP 기능에 없는 부분을 확장한 경우입니다.

----
내 블로그: http://unipro.tistory.com

내 블로그: http://unipro.tistory.com

madman93의 이미지

조심해 신고한다.
아빠 언제 되는거야?
---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

unipro의 이미지

인터넷을 찾아보면 다 있는 내용입니다.
그리고 지금은 RTSP 스트리밍하고는 멀어졌습니다.
대세는 어댑티브 스트리밍이라고... 훗!!
----
내 블로그: http://unipro.tistory.com

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