2017-03-07 100 views
0

私はRTSPサーバーを作成しました。クライアントはVLC Media Playerです。それは次のように私のサーバーに接続します。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の例では、あなたはRFC6184に従ってNALユニットをパケット化しなければならないことを意味するH.264メディアを送信したいと思っています。

また、インターリーブモードを使用しているため、RTSPインターチェンジで使用されるTCP接続を介してRTPパケットとRTCPパケットを多重化する必要があります。 RFC2326には、これを行う方法を説明するセクションがあります。

要約すると、mp4ファイルを直接ストリーミングしようとしているようです。代わりにmp4ファイルを解析してNALユニットを抽出し、それをRTPでパケット化し、RTSP TCP接続で多重化する必要があります。あるいは、UDPを介してパケットをインターリーブして送信しないことを決定します。 RFC6184の正しいパケット化モードを実装するようにしてください。

関連する問題