【发布时间】:2015-03-07 15:57:39
【问题描述】:
我有一个来自 ffmpeg 的 RTP 多播流,它要求用户使用外部 SDP 文件,因为这有时会成为我正在考虑使用 RTSP 包装流的问题。
我有一个应用程序已经对 RTP 流进行了一些管理,因此在其中包含 RTSP 包装器也会很有用,尽管我不希望包装器在传递 SDP 信息之外做任何事情。现在我会说我正确地传递了 SDP 信息(否则它会卡在那个请求中),但是我没有收到任何 PLAY 命令,播放器在 SETUP 请求后卡住了,所以我想我的回复是错误的,但是在为 Transport 标头测试了许多不同的值之后,我无法得到任何超出这一点的东西。
这是 SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 236.0.0.1
t=0 0
a=tool:libavformat 56.7.102
m=video 2000 RTP/AVP 96
b=AS:500
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1
这是来自 VLC 的示例 SETUP 请求:
SETUP rtsp://127.0.0.1:34343/live.sdp/ RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27)
Transport: RTP/AVP;multicast;client_port=2000-2001
我尝试过的众多回复之一:
RTSP/1.0 200 OK
CSeq: 4
Transport: RTP/AVP;multicast;client_port=2000-2001;source=236.0.0.1;port=2000-2001
Session: 0456804596
我试过用destination代替source,用server_port代替port,虽然RTP多播端口是2000,但我看到流媒体也在使用其他端口,比如57927和57928,所以我试过了等等。
【问题讨论】: