2013-04-14 3 views
3

내 전화에 대해 비슷한 앱을 쓸 수 있도록 spydroid (https://code.google.com/p/spydroid-ipcamera/)의 작동 방식을 이해하려고합니다. 여기에 내가 RTSP, RTCP 및 RTP에 대해 이해하고있는 것은 무엇입니까?RTSP, RTCP 및 RTP 포트 번호

RTSP는 지정된 포트에서 실행되고 모든 것을 설정합니다.

RTCP는 모든 포트에서 실행될 수 있습니다. 클라이언트 포트와 서버 포트가 있습니다. 이것은 RTP에 대한 제어 흐름입니다.

모든 포트에서 RTP를 실행할 수 있습니다. 클라이언트 포트와 서버 포트가 있습니다. 여기에는 오디오 및 비디오 스트림이 포함됩니다. 이것은 실제로이 포트에서 오디오 및 비디오를 전송하지 않기 때문에 혼란 스럽습니다. spydroid는 포트 5006에서 비디오를 보내고 5004에서 오디오를 보냅니다.

Spydroid가 포트를 확인하기 위해 RTSP를 통해이 메시지를 보냅니다 ... 전송 : RTP/AVP/UDP, 유니 캐스트, 대상 = 123.456.789.00;

클라이언트 (VLC는 내 경우)가 65234에서 RTP 용으로, 65235 용으로 수신 대기하고 있다고 생각합니다. 클라이언트 측에서 65234, 65234-65235, 서버 측에서 65234, RTCP 메시지. 또한 spydroid는 RTP의 경우 44580, RTCP의 경우 44581에서 수신 대기합니다. 이게 옳은 거니? RTSP의 DESCRIBE 순서 이제

이 spydroid 클라이언트 m 말하고있다 = 비디오 5006/AVP 96 I이이 포트 5006

를 통해 UDP를 통해 비디오를 전송 될 것이라고 말하고 생각 RTP는 모든 것을 있습니까 I 위의 문장에서 올바른 소리?

내가 알고 싶은 것은이 정보를 올바른 포트로 전달하는 방법입니다. 클라이언트 포트는 VLC에 의해 자동으로 할당됩니다. 이 명령을 실행 해 보았습니다 ... vlc "rtsp : //192.168.1.104 : 8086"--rtp-client-port = 58866 그러나 VLC는이를 무시하고 자체 포트를 선택합니다. 그래서 나는 포트 8086, 5004 및 5006을 포워딩했다. 그러나 RTP와 RTCP 연결을 위해 어느 포트를 포워드할지는 매번 바뀌기 때문에 나는 모른다. 이 작업을 수행하는 유일한 방법은 모든 포트를 내 컴퓨터로 포워딩하는 것입니다. (나는 링크시스 라우터가 있고 그것은 DMZ 옵션을 가지고있다) 그러나 이것은 나쁜 해결책이다. 누군가 나를 올바른 방향으로 안내 할 수 있습니까?

또한 인터넷을 통해 외부 IP 주소를 통해 모든 것을 전송하므로이 작업을 수행하고 있음을 알고있는 것이 좋습니다. 어디로 spydroid는 로컬 영역 네트워크에서 사용하기위한 것입니다.

답변

0

RTSP의 작동 방식과 VLC 구성 방법을 모르지만 RTP에 대해 알고 있습니다. 클라이언트 포트가 spydroid가 패킷을 보낼 곳을 의미하고 서버 포트가 소스 포트로 사용할 포트를 추측하고 있습니다. UDP 수준에서 RTP 패킷은 다음과 같이 보입니다.

| SRC_PORT = 44580 | DST_PORT = 65234 | ... RTP_PACKET |

다음 : m은 = SDP 표준 5006에 따라 RTP/AVP 96 비디오 (5006)는 (확실한 이유 생략) spydroid 수신 RTP 패킷 동안 청취 될 포트와 RTP 페이로드 타입이 될 것이다 (96)

따라서 VLC가 포트 65234를 수신하고 {44580, 65234} 패킷을 PC로 전달하는지 확인하십시오. 당신이 준 정보는 조금 혼란스럽고 자기 모순처럼 보입니다. 그래서, 그것에 기초하여 구체적인 것을 결론 지을 수는 없습니다.

0

SDP 표준에 따르면 ...

실제로 소스 포트를 나타냅니다.

포트 (범위)는 미디어가 전송되는 곳을 나타냅니다.

예 : 소스가 5006을 전송하지만 10002를 통해 전송되는 경우 rtsp가 전송 헤더를 통해 도움을줍니다.

원본 포트는 실제로 5006 일 수 있지만 LAN 내부의 중간 라우터 나 방화벽이 패킷을 수신하여 다른 포트와 주소를 통해 보냈습니다.

대부분의 소프트웨어는 네트워크 설정에 대해 자동으로 알지 못하므로 외부 네트워크 사용을 위해 sdp를 수정하지 않고도 네트워크 주소 공간 외부에서 실제로 사용할 수 없습니다.

일치시킬 포트가 필요한 경우 소켓과 소프트웨어를 수동으로 구성하면됩니다. (예 : 멀티 캐스트 또는 다른 이유로 포트 (범위)가 rtsp 전송 헤더의 내용과 다를 필요가있는 몇 가지 이유가 있지만 그럴 경우 ... 어떻게 지금 왜 어떻게 이해할 수 있습니까?

Live 555 및 일부 프로브 패킷을 보내고 해당 패킷이 icmp를 통해 반송되면 원본 포트가 0으로 재설정되어 발견 될 수 있지만 제대로 수행되지 않으면 호스트의 기존 트래픽과 충돌 할 수 있음을 유의하십시오.

실제로 QuickTime 및 vlc 실제로 (대부분 사람들이하는) 이것을 망쳐 놓고, 0이 사용되고 ffmpeg와 lav가 미디어 포트에서 제대로 범위를 지원하지 않을 때 동일한 호스트의 모든 포트에서 디코더로 곧장 주입 할 수있게 해줍니다.

포트 번호가 1 또는 65536 또는 * 또는 -7 일 경우 어떻게 생각합니까?

도 처리해야합니까?

범위가 * 또는 - 또는 기타 인 경우 어떻게됩니까?

값이 존재하지 않는다고해서 원하는 경우 기존 정보와 관련하여 올바른 작업을 수행 할 수 없다는 것을 기억하십시오.받은 데이터가 예상과 다를 경우에도 또는 익숙한.

관련 문제