【问题标题】:Why won't VLC send an rtsp PLAY request to my server?为什么 VLC 不会向我的服务器发送 rtsp PLAY 请求?
【发布时间】:2017-01-17 12:30:54
【问题描述】:

我正在 NodeJs 中实现一个 RTSP 服务器,使用 RFC(rtsprtpsdp)和这个tutorial

我正在使用 VLC 来测试我的实现,它适用于示例(教程底部的链接),但我的服务器中途停止。 我怀疑一些 RFC 合规性问题,但我找不到它,而且 VLC 并没有真正提供任何有用的信息来说明它在做什么。

运行 wireshark 和 c++ 服务器实现,并将 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 消息:

...
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 响应中缺少一个空行。因此,我尝试添加不同数量的换行符、ID、不同的日期以及不在不同地方的内容,但没有骰子。

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 您是否尝试在设置答案的末尾添加\r\n?就像在 HTTP 中一样,header 和 body 之间的分隔是一个空行。

标签: tcp vlc rtsp rtp sdp


【解决方案1】:

您对DESCRIBE 命令的响应似乎无效 - 您正在回复 96 个字符,而 Content-Length 标头状态为 91。不确定这是否会影响结果,但我认为 VLC 可能因此而失败(它可能是它无法解析连接数据线)。最后一行末尾的 SDP 数据末尾似乎还有一个不需要的额外换行符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多