2016-09-09 22 views
0

RFC(rtsprtpsdp)とtutorialを使用して、NodeJsでRTSPサーバを実装しています。なぜVLCはサーバーにrtsp PLAYリクエストを送信しませんか?

VLCを使用して実装をテストしていますが、この例ではうまくいきますが(チュートリアルの最後のリンク)、サーバーの途中で停止します。 私はいくつかのRFC準拠の問題を疑っていますが、私はそれを見つけることができず、VLCはそれが何をしているかに関して本当に有益な情報を提供していません。

OPTIONS rtsp://192.168.10.151:8554/mjpeg/1 RTSP/1.0 
CSeq: 2 
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25) 

RTSP/1.0 200 OK 
CSeq: 2 
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE 

DESCRIBE rtsp://192.168.10.151:8554/mjpeg/1 RTSP/1.0 
CSeq: 3 
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25) 
Accept: application/sdp 

RTSP/1.0 200 OK 
CSeq: 3 
This should be date 
Content-Base: rtsp://192.168.10.151:8554/mjpeg/1/ 
Content-Type: application/sdp 
Content-Length: 90 

v=0 
o=- 6334 1 IN IP4 192.168.10.151 
s= 
t=0 0 
m=video 0 RTP/AVP 26 
c=IN IP4 0.0.0.0 
SETUP rtsp://192.168.10.151:8554/mjpeg/1/ RTSP/1.0 
CSeq: 4 
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25) 
Transport: RTP/AVP/TCP;unicast;interleaved=0-1 

RTSP/1.0 200 OK 
CSeq: 4 
This should be date 
Transport: RTP/AVP/TCP;unicast;interleaved=0-1 
Session: -2144778205 

PLAY rtsp://192.168.10.151:8554/mjpeg/1/ RTSP/1.0 
CSeq: 5 
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25) 
Session: -2144778205 
Range: npt=0.000- 

RTSP/1.0 200 OK 
CSeq: 5 
This should be date 
Range: npt=0.000- 
Session: -2144778205 
RTP-Info: url=rtsp://127.0.0.1:8554/mjpeg/1/track1 

そして、VLCメッセージ:WiresharkのとC++サーバの実装を実行し、それにVLCを指し

は、すべての手順を示し

... 
live555 debug: RTP subsession 'video/JPEG' 
core debug: selecting program id=0 
live555 debug: setup start: 0.000000 stop:0.000000 
live555 debug: play start: 0.000000 stop:0.000000 
core debug: using access_demux module "live555" 
core debug: looking for decoder module matching "any": 43 candidates 
... 

私は自分のサーバーを実行し、それは決して

OPTIONS rtsp://rasmus.axit.local:8554/mjpeg/1 RTSP/1.0 
CSeq: 2 
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25) 

RTSP/1.0 200 OK 
CSeq: 2 
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE 

DESCRIBE rtsp://rasmus.axit.local:8554/mjpeg/1 RTSP/1.0 
CSeq: 3 
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25) 
Accept: application/sdp 

RTSP/1.0 200 OK 
CSeq: 3 
Date: Fri, 09 Sep 2016 09:36:29 GMT 
Content-Base: rtsp://rasmus.axit.local:8554/mjpeg/1 
Content-Type: application/sdp 
Content-Length: 91 

v=0 
o=- -12345678 1 IN IP4 192.168.10.71 
s= 
t=0 0 
m=video 0 RTP/AVP 26 
c=IN IP4 0.0.0.0 

SETUP rtsp://rasmus.axit.local:8554/mjpeg/1/ RTSP/1.0 
CSeq: 4 
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25) 
Transport: RTP/AVP/TCP;unicast;interleaved=0-1 

RTSP/1.0 200 OK 
CSeq: 4 
Date: Fri, 09 Sep 2016 09:36:29 GMT 
Transport: RTP/AVP/TCP;unicast;interleaved=0-1 
Session: -12345678 

そして、VLC:

再生要求を送信します
... 
live555 debug: RTP subsession 'video/JPEG' 

そこから続かない。

何が欠けているのか分かりません。以前はSETUPも送信されておらず、DESCRIBE応答で空行が見つからなかったことが判明しました。その結果、私は様々な量の改行、ids、異なる日付を追加しようとしましたが、異なる場所にはないものの、サイコロはありません。

詳細情報が必要な場合はお知らせください。

+0

SETUP回答の最後に '\ r \ n 'を追加しようとしましたか? HTTPの場合と同様に、ヘッダと本文の間の分離は空の行です。 – mpromonet

答えて

0

DESCRIBEコマンドへの応答が無効であるようです - Content-Lengthヘッダー状態91の間に96文字で返信しています。これが結果に影響を与えるかどうかはわかりませんが、VLCはこのために失敗する可能性があります接続データラインを解析できません)。また、最後の行の最後にSDPデータの最後に不要な余分な改行があるようです。