我正在为Android创建一个播放列表应用。我有一个rtsp链接到存储媒体的第三方服务器。我可以使用Android提供的VideoView播放rtsp。我不想流式传输视频,因为我只对音频感兴趣。所以我可以保存带宽,它会更快。但我不知道如何仅从Android的rtsp链接中提取音频。
答案 0 :(得分:1)
仅当您的服务器以非聚合模式传输音频和视频时,才能播放音频流。在非混合模式下,您可以分别使用PLAY
命令进行音频和视频。
你的sdp可能看起来像这样
v=0
o=- 2890844526 2890842807 IN IP4 192.16.24.202
s=RTSP Session
m=audio 0 RTP/AVP 0
a=control:rtsp://audio.example.com/twister/audio.en
m=video 0 RTP/AVP 31
a=control:rtsp://video.example.com/twister/video
发送SETUP for AUDIO
C->A: SETUP rtsp://audio.example.com/twister/audio.en RTSP/1.0
CSeq: 1
Transport: RTP/AVP/UDP;unicast;client_port=3056-3057
A->C: RTSP/1.0 200 OK
CSeq: 1
Session: 12345678
Transport: RTP/AVP/UDP;unicast;client_port=3056-3057;
server_port=5000-5001
发送播放音频
C->A: PLAY rtsp://audio.example.com/twister/audio.en RTSP/1.0
CSeq: 2
Session: 12345678
Range: smpte=0:10:00-
A->C: RTSP/1.0 200 OK
CSeq: 2
Session: 12345678
Range: smpte=0:10:00-0:20:00
RTP-Info: url=rtsp://audio.example.com/twister/audio.en;
seq=876655;rtptime=1032181
请参阅RFC 2326的第14.1节
如果您在回复PLAY
时收到错误460,则表示服务器不支持非聚合mdoe。在这种情况下,无法单独传输音频和视频
M->C: RTSP/1.0 460 Only aggregate operation allowed
CSeq: 5