2017-03-07 139 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的正確包模式。

相關問題