从Android的rtsp链接中提取音频

时间:2012-01-02 09:04:30

标签: android rtsp

我正在为Android创建一个播放列表应用。我有一个rtsp链接到存储媒体的第三方服务器。我可以使用Android提供的VideoView播放rtsp。我不想流式传输视频,因为我只对音频感兴趣。所以我可以保存带宽,它会更快。但我不知道如何仅从Android的rtsp链接中提取音频。

1 个答案:

答案 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