2017-03-07 138 views
0

我已经创建了RTSP服务器。客户端是VLC媒体播放器。它通过以下方式与我的服务器连接:是否可以通过RTSP协议传输MP4视频文件?

OPTIONS rtsp://192.168.1.6:5554/camera RTSP/1.0 
CSeq: 2 
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) 

RTSP/1.0 200 OK 
Session: 698955009;timeout=60 
Expires: 0 
Server: RTSP Camera Server (Android) ver. 1.8 
Public: DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSE,GET_PARAMETER,SET_PARAMETER 
Cache-Control: no-cache 

DESCRIBE rtsp://192.168.1.6:5554/camera RTSP/1.0 
CSeq: 3 
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) 
Accept: application/sdp 

RTSP/1.0 200 OK 
Content-Base: rtsp://192.168.1.6:5554/camera 
Content-Length: 269 
Session: 698955009;timeout=60 
Expires: 0 
Content-Type: application/sdp 
Server: RTSP Camera Server (Android) ver. 1.8 
Cache-Control: no-cache 

v=0 
o=- 0 0 IN IP4 192.168.1.6 
s=RTSP_CAMERA 
i=N/A 
c=IN IP4 192.168.1.6 
t=0 0 
a=recvonly 
m=video 0 RTP/AVP 96 
a=rtpmap:96 H264/90000 
a=control:trackID=0 
a=fmtp:96 packetization-mode=1;profile-level-id=640029;sprop-parameter-sets=Z2QAKawbGsBQBbk=,aOpDyw==; 

SETUP rtsp://192.168.1.6:5554/camera/trackID=0 RTSP/1.0 
CSeq: 4 
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) 
Transport: RTP/AVP/TCP;unicast;interleaved=0-1 

RTSP/1.0 200 OK 
Transport: RTP/AVP/UDP;unicast;ssrc=7e15a85d;interleaved=0-1;mode=play 
Session: 698955009;timeout=60 
Server: RTSP Camera Server (Android) ver. 1.8 
Cache-Control: no-cache 
Expires: 0 

PLAY rtsp://192.168.1.6:5554/camera RTSP/1.0 
CSeq: 5 
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) 
Session: 698955009 
Range: npt=0.000- 

RTSP/1.0 200 OK 
Session: 698955009;timeout=60 
Server: RTSP Camera Server (Android) ver. 1.8 
Cache-Control: no-cache 
Expires: 0 

... sending video.mp4 ... 

但是VLC不播放视频。我试图发送不同格式的视频文件(例如,3GP,MOV),但它不起作用。我必须对视频进行编码吗?或者,也许任何服务器响应不正确?所以,我的问题是如何流媒体文件通过RTSP,这是否足够可能。

回答

2

您不会通过RTSP发送“mp4文件”,mp4文件只是媒体示例的容器。相反,您希望将存储在mp4文件中的媒体数据打包在RTP数据包中。在您的问题中的SDP示例中,您希望发送H.264媒体,这意味着您必须根据RFC6184打包NAL单元。

另外,您正在使用交织模式,这意味着您必须通过用于RTSP交换的TCP连接来复用RTP和RTCP数据包。 RFC2326有一节解释如何做到这一点。

总之,它听起来像是在试图直接传输mp4文件。相反,您需要解析mp4文件并提取NAL单元,然后需要通过RTP将其分组,然后通过RTSP TCP连接进行复用。或者,决定不交错并通过UDP发送数据包。 务必执行RFC6184的正确包模式。

相关问题