【问题标题】:Is it possible to stream MP4 video file through RTSP protocol?是否可以通过 RTSP 协议流式传输 MP4 视频文件?
【发布时间】:2017-07-28 01:10:14
【问题描述】:

我已经创建了 RTSP 服务器。客户端是 VLC 媒体播放器。它通过以下方式与我的服务器连接:

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 流媒体文件,这是否足够。

【问题讨论】:

    标签: video-streaming rtsp


    【解决方案1】:

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

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

    总之,听起来您正在尝试直接流式传输 mp4 文件。相反,您需要解析 mp4 文件并提取 NAL 单元,然后需要通过 RTP 打包并通过 RTSP TCP 连接进行多路复用。或者,决定不交错并通过 UDP 发送数据包。 请务必实现 RFC6184 的正确分包模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      相关资源
      最近更新 更多