RTP 역방향 프록시

RTP 역방향 프록시

저는 실제로 코드를 작성하기 전에 비디오 스트리밍 서버의 프로토타입을 만들어 보았습니다. 그래서 VLC를 사용하여 다음 명령을 사용하여 서버에서 스트리밍합니다.

cvlc video.mpg --loop --sout '#transcode{vb=0,vcodec=mpgv,fps=20,ab=0,acodec=mpga,channels=2,venc=ffmpeg}:rtp{mux=ts,ttl=10,dst=127.0.0.1,port=9554}'

스트리밍 서비스가 시작되었습니다.로컬 호스트포트 9554에서. 몇 가지 조사 끝에 VLC 스트림을 공용 IP에 바인딩하지 못했습니다. 이는 다른 페이지에서 공유할 가치가 있는 또 다른 문제입니다.
문제는 스트림을 외부 세계에서 볼 수 있도록 하기 위해 NginX 역방향 프록시를 사용하고 있다는 것입니다.HTTP 프로토콜VLC에서 스트리밍RTTP.

cvlc video.mpg --loop --sout '#transcode{vb=0,vcodec=mpgv,fps=20,ab=0,acodec=mpga,channels=2,venc=ffmpeg}:http{mux=ts,ttl=10,dst=0.0.0.0:9554/live}'

글쎄, 내 휴대폰에서 비디오 스트리밍은 잘 작동하는데, 난 그냥 사용하지 않을 뿐이야RTTP규약.
문제는 역방향 프록시를 사용하는 방법을 모를 때 발생합니다.UDP 스트림. 물론 NginX는 최신 버전에서는 HTTP와 TCP만 프록시할 수 있기 때문에 작동하지 않습니다.
그럼 역방향 프록시를 사용하는 방법을 알아보세요.UDP 스트림?
VLC를 localhost 대신 공개 주소에 바인딩하는 방법을 알고 있다면 다른 관련 답변도 환영합니다.

답변1

RTP는 RTCP(RTP 제어 프로토콜)와 함께 사용됩니다.

RTP는 미디어 스트림(예: 오디오 및 비디오)을 전달하는 반면, RTCP는 전송 통계 및 서비스 품질(QoS)을 모니터링하는 데 사용되며 여러 스트림의 동기화를 용이하게 합니다.

일반적으로 RTP는 짝수 UDP 포트에서 전송되고 RTCP 메시지는 다음으로 높은 홀수 포트에서 전송됩니다.

그래서 RTCP를 잊어버린 공용 IP 주소에 RTP를 바인딩하지 못한 것 같습니다.

다시 한번 말하지만, 필요한 것은 역방향 프록시가 아니라 DNAT라고 생각합니다.

내 제안은 인터넷을 통해 비디오 및 오디오를 스트리밍하려면 RTP 대신 HLS를 사용하고 RTP 및 기타 유사한 프로토콜보다 더 유연하며 Nginx를 사용하여 HLS를 제공할 수 있다는 것입니다.

http://nginx.org/en/docs/http/ngx_http_hls_module.html

답변2

RTP는 일반적으로 TCP를 통해서도 작동합니다. 일반적으로 ?transport=tcp링크 끝에 추가하면 작동하지만 귀하의 경우는 확실하지 않습니다.

관련 정보