live555 –RTSP SET_UP PLAY 執行流程分析

來源:互聯網
上載者:User
1 handleCmd_SETUP()在用戶端串連成功後,調用RTSPServer::incomingConnectionHandler,在其中建立RTSPClientSession * _pClientSession 進而在其後調用RTSPClientSession::handleCmd_SETUP()方法在此方法中執行subsession->getStreamParameters()(註:在DynamicRTSPServer::lookupServerMediaSession會執行ServerMediaSession*createNewSMS函數從而建立session以及subsession所以這裡的subsession是H264VideoBufferServerMediaSubsession、ADTSAudioBufferServerMediaSubsession、MP3AudioFileServerMediaSubsession類型)重點分析getStreamParameters函數:以H264VideoBufferServerMediaSubsession為例所以這裡實際是H264VideoBufferServerMediaSubsession對象指標調用getStreamParameters函數。Step1: 產生資料來源對象指標FramedSource* mediaSource     = createNewStreamSource(clientSessionId, streamBitrate)建立source 指標對象。這裡實際是執行H264VideoBufferServerMediaSubsession::createNewStreamSource根據代碼可知 這裡函數傳回值實際是H264BufferStreamFramer *類型。Step2:產生sink指標rtpSink = createNewRTPSink(rtpGroupsock, rtpPayloadType,mediaSource);這裡實際執行H264VideoBufferServerMediaSubsession::createNewRTPSink這裡函數實際傳回值是H264VideoRTPSink * 。Step3:streamToken = fLastStreamToken      = new StreamState(*this, serverRTPPort, serverRTCPPort,rtpSink, udpSink,streamBitrate, mediaSource,rtpGroupsock, rtcpGroupsock);2handleCmd_PLAY在函數中調用Step1:fStreamStates[i].subsession->startStream即執行OnDemandServerMediaSubsession::startStream在startStream中執行Step2: StreamState::startPlaying()接著執行fRTPSink->startPlaying()(即MediaSink::startPlaying)Step3:H264VideoRTPSink::continuePlaying()函數如果是首次執行還會產生H264FUAFragmenter* 指標對象,然後執行MultiFramedRTPSink::continuePlaying()Step4:MultiFramedRTPSink buildAndSendPacket(Boolean isFirstPacket)step5:MultiFramedRTPSink:: packFrame()Step6:fSource->getNextFrame即MediaSource :: getNextFrameStep7:H264BufferStreamFramer::doGetNextFrame()step8: MultiFramedRTPSink::sendPacketIfNecessary(), 這裡才真正發送RTP資料包

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.