VLCを介してRTSPストリームを受信したいが実行しようとすると
sudo -u non_root_user cvlc -vvv -I dummy rtsp://ip:port/x.sdp
私は得る:
Unable to determine our source address: This computer has an invalid IP address: 0x0
ファイアウォールを無効にするとストリームをリッスンできるため、ポートが閉じているようです。 RTSPを受信できるようにiptablesの設定方法を問い合わせたいと思います。ありがとうございます。
ベストアンサー1
あなたは会ったことがありますか?醜いハッカー存在するライブ555、VLCライブラリはRTSPクライアント機能を提供するために使用されます。 (VLCのRTSPサーバーコードはVLCによって異なります。)ハッカーは、コンピュータがLAN上でどのIPを使用しているかを調べようとします。 (このハッキングは見苦しいですが、Live555がこれを行うより良い方法がわかりません。)
発生したエラーを修正するには、ファイアウォールでUDPポート15947を開く必要があります。これは、今回のハッキングにLive555が使用する「テストポート」です。
これを完了したら、ファイアウォールの動作方法に応じてストリームを受信するために別のポートを開く必要があります。 RTSPは単なるストリームです。コントロールストリームではないプロトコル物を配達する規約。 RTSPを実際のストリーミングプロトコルの「VCRボタン」(再生、停止、一時停止、早送り、巻き戻し...)と考えてください。 RTSP クライアントはストリームをネゴシエートします。物を配達する「再生」操作の一部としてサーバーに接続するポート。
その結果、クライアント(この場合はVLC)はSETUP
RTSPコマンドの特定のポートにメディアを送信するようにサーバーに要求します。
SETUP rtsp://192.168.0.1:8554/42.ts/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.0.2 (LIVE555 Streaming Media v2011.12.23)
Transport: RTP/AVP;unicast;client_port=60860-60861
つまり、VLC はポート 60860 および 60861 で RTP 経由でメディアを転送しようと RTSP サーバーに通知します。クライアントはこれらのポートをランダムに選択します。ファイアウォールがそれをブロックすると、RTSPネゴシエーションが成功してもストリーミングがブロックされます。
最良のシナリオでは、ファイアウォールがこのように高いポートをブロックしない場合、またはこの RTSP ネゴシエーションが検出された場合、ブロックを解除できるステートフルチェック機能があります。
ファイアウォールがそれをブロックしている場合は、次のようにデバッグできます。ワイヤーシャーク。 RTSPプロトコルを理解します。 RTSPストリームでパケットを右クリックし、「TCPストリームに従う」と言います。ポップアップウィンドウでRTSPSETUP
コマンドを探します。次にWiresharkを再起動し、今回はこのポートでUDPトラフィックを見つけます。 (これはすべてRTSPクライアントがストリームをダウンロードし続けるか、ストリームをダウンロードしようとしている間に発生します。)