leetg2
2k
2018-04-25 17:59:15
10
4472

webrtc와 RTSP 관련 질문입니다.


안녕하세요. 


HTML5 에서는 RTSP을 지원하지 않습니다. 따라서 HTML5 에서 RTSP를 사용하려면 WebRTC를 사용해야 합니다.


보통 구조는 IP Camera(RTSP) <-> Server(ex.kurento, web call server) <-> Chrome(HTML5)  구조입니다.


1. IP Camera(RTSP) <-> Chrome(HTML5) 방식으로, 서버없이 Chrome 에서 IP Camera(RTSP) 연동하는 방법이 있을까요?

2. WebRTC는 RTSP 를 Chrome 에서 지원하는 VP8로 Transcoding 하는건가요 ? (kurento 사용하여 rtsp streaming은 구현하였습니다. 근데 webrtc가 무슨 역할을 해서 chrome에서 rtsp가 재생되는지 모르겠습니다..)

3. Client <-> IP Camera 형태가 아니라면 서버의 트래픽과 비용이 많이 발생할 것 같습니다. 

가장 최적화된 방법은 무엇이 있을까요..?


미디어 쪽은 문외한 입니다. 물어볼 곳도 없고요..


작은 조언이라도 부탁 드립니다. 즐거운 하루되세요.

0
0
  • 답변 10

  • Celsius
    630
    2018-04-26 10:49:50 작성 2018-04-26 10:52:02 수정됨

    RTSP는 잘 모르지만 하시려는게 이런건가요?


    https://rtsp2webrtc.herokuapp.com/


    아마 1,2 질문에 대한 답변은 저 링크에 있을거 같구요.

    3번은 IP 카메라가 외부접근이 가능하다면 p2p로 처리하시면 될거같습니다.

    0
  • leetg2
    2k
    2018-04-26 13:32:37

    우선 답변 정말 감사드립니다.

    웹 페이지에서 RTSP 연결해서 Wireshark 로보면 source 가 하나의 IP 에서 로컬로 들어옵니다.. 여기서도 미디어 서버를 두고 RTSP 를 연결하는 구조인 것 같습니다. ㅠㅠ

    0
  • 비가온다 나는피해야겠다
    731
    2019-05-31 10:16:32

    leetg2 

    이 문의사항 결국 어떻게 처리 되었나요? 저도 궁금합니다.

    결국 중간에 중계 미디어 서버 하나 두신건가요?

    미디어 서버를 두신거라면 서버 사양좀 부탁드려도 될까요?

    jenty521@naver.com  ㅠㅠ 저희도 같은 이슈가 있어서요...

    0
  • wpqw
    47
    2019-06-26 13:29:02

    leetg2

    저역시 rtsp로 들어온 h.264 data를 중계 서버없이 webrtc 를 이용해서 전달해야 하는 기능을 구현중입니다.

    혹시 결과가 어떻게 되었는지 알수 있을까요?

    owpqwo@daum.net

    0
  • leetg2
    2k
    2019-07-10 14:46:01

    오랜만에 로그인했는데 답변이 달렸네요. 늦었지만 답변 드립니다.

    미디어 서버는 서버 비용이 발생하기 때문에 배제하였습니다..우선 저희는 UDP HolePunching 을 통해서 App <-> Camera를 연결하여 실시간 영상을 보는것으로 하였습니다.  VLC 로 UDP 영상 데이터 받는 옵션이 있습니다. udp/h264://@:5555 이걸 이용해서 Camera에서 전달하는 영상을 확인합니다.

    0
  • wpqw
    47
    2019-07-15 19:52:09

    leetg2

    혹시 서버없이  구현하셨다면,

    1. 방화벽 안에 있는  ip camera를 app을  이용해서 rtsp를 전송받아서 다시 app에서 webrtc를 연동시킨건가요?

    2. 아니면 방화벽 안에 있는(내부 ip의 rtsp)  ip camera를  hole punching을  이용해서 외부의 app(android, web)에서 직접 접근하셔서 vlc 를  이용해서  화면에 출력하신건가요?

    그리고  hole punching을 구현하실때 별도의 서버도움없이 구현하신건가요?

    관련해서 참고 하신 자료가 있으면, 링크라도 알려주시면 감사드리겠습니다.

    0
  • leetg2
    2k
    2019-07-16 12:36:49

    1. 저희는 webrtc 를 검토하였지만 카메라에 webrtc 를 올릴 수 없어서 UDP Hole Punching 으로 하였습니다. 또한, TCP Hole punching 보다 UDP Hole punching의 성공률이 높아서 UDP를 선택하였습니다.

    참고 블로그 : https://www.netmanias.com/ko/post/blog/6263/nat-network-protocol-p2p/p2p-nat-nat-traversal-technic-rfc-5128-part-2-udp-hole-punching


    2. RTSP 는 TCP 기반이여서 RTSP 를 포기하였습니다. RTSP에 RTP 가 존재하는데요. RTP는 UDP Packet입니다. 이것을 App에서 받아서 출력하는 형태로 하였습니다. RTSP 를 사용하실려면 공유기의 포트포워딩을 통해서 하시면 RTSP 를 사용하실 수 있습니다. 많은 카메라가 이렇게 설정을 해서 사용을 하는데요.. 사실 사용자에게 판매될 카메라면 사용자가 포트포워딩 설정을 모르시는 분이 대부분일 겁니다. 이 부분은 B2C면 고려를 해보셔야 할 것 같습니다. hole punching 을 구현할 때 NAT 종류 판단 및 App, Camera의 Public IP, Port 를 조회하기 위해 서버를 두었습니다. (Stun 서버라고도 부릅니다.)


    사실 저희도 카메라 쪽은 처음인 회사라 맞게 개발되었는지 모르겠습니다. 카메라쪽 자원이 충분하다면 webrtc를 올려서 하시면 P2P에 대한 문제가 많이 해결되실 수 있을거라고 생각됩니다.

    0
  • leetg2
    2k
    2019-07-16 12:43:40

    참고로 Hole Punching을 구현하신다면 NAT 종류중에 Symmetric nat가 있습니다. 공유기는 대부분의 경우 cone nat 이지만 통신사는 kt가 Symmetric nat 입니다. Symmetric nat를 연결하기 위한 Camera <-> App(KT)일 경우의 Hole punching에 대한 방안에 대해서 심도있게 하시고 확인해보시고 적용할 것을 작은 조언을 드립니다.!

    1
  • wpqw
    47
    2019-07-16 19:41:48

    @leetg2

    친절한 답변 정말 감사드립니다.

    한가지 더 궁금한 사항이 있는데요.

    RTSP는 Streaming을 컨트롤 하는 프로토콜이고, 실제 미디어 송출은 말씀하신대로 RTP로 전송 하는것으로 알고 있습니다. 혹시 RTSP를 포기 하였다고 하셨는데, IP Camera가 RTSP 기반이고, 주소 역시 rtsp://ip/camera1  이런식으로 되어 있는데, RTP 주소를 어떻게 획득하셨는지 궁금합니다. 아니면 IP Camera가 그냥 RTP를 지원하는 카메라였던건가요?

    RTSP주소로 부터 RTP를 획득하셨다면, rtsp로 일단 describe, setup, play까지 컨트롤을 할수 있어야 이과정에서 RTP 주소를 얻어오는건가 싶어서요.

    다시 한번 친절한 답변 감사드립니다.

    0
  • leetg2
    2k
    2019-07-17 13:00:18 작성 2019-07-17 13:02:56 수정됨

    저희는 카메라 펌웨어를 직접 개발을 했습니다. 그래서 RTSP 사용시에 전단계를 생략하고 UDP Hole punching 을 통해 알게된 App의 ip,port로 RTP 데이터를 보내는것으로 하였습니다. webrtc 에 p2p 기능도 포함되어 있는걸로 알고 있습니다. app, 카메라 펌웨어에 webrtc를 올리실 수 있으면 p2p에 대한 고민이 해결되실 수 있을거라고 생각되네요

    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.