diff --git a/webrtc/WebRtcPlayer.cpp b/webrtc/WebRtcPlayer.cpp index 7531332d..1bd8b513 100644 --- a/webrtc/WebRtcPlayer.cpp +++ b/webrtc/WebRtcPlayer.cpp @@ -33,12 +33,6 @@ void WebRtcPlayer::onStartWebRTC() { CHECK(_play_src); WebRtcTransportImp::onStartWebRTC(); if (canSendRtp()) { - //确保该rtp codec类型对方支持 - memset(_can_send_rtp, 0, sizeof(_can_send_rtp)); - for (auto &m : _answer_sdp->media) { - _can_send_rtp[m.type] = m.direction == RtpDirection::sendonly || m.direction == RtpDirection::sendrecv; - } - _play_src->pause(false); _reader = _play_src->getRing()->attach(getPoller(), true); weak_ptr weak_self = static_pointer_cast(shared_from_this()); @@ -49,7 +43,7 @@ void WebRtcPlayer::onStartWebRTC() { } size_t i = 0; pkt->for_each([&](const RtpPacket::Ptr &rtp) { - strongSelf->beforeSendRtp(rtp, ++i == pkt->size()); + strongSelf->onSendRtp(rtp, ++i == pkt->size()); }); }); _reader->setDetachCB([weak_self]() { @@ -91,10 +85,3 @@ void WebRtcPlayer::onRtcConfigure(RtcConfigure &configure) const { configure.audio.direction = configure.video.direction = RtpDirection::sendonly; configure.setPlayRtspInfo(_play_src->getSdp()); } - -void WebRtcPlayer::beforeSendRtp(const RtpPacket::Ptr &rtp, bool flush, bool rtx) { - if (!_can_send_rtp[rtp->type]) { - return; - } - onSendRtp(rtp, flush, rtx); -} diff --git a/webrtc/WebRtcPlayer.h b/webrtc/WebRtcPlayer.h index ade67388..beb25ef2 100644 --- a/webrtc/WebRtcPlayer.h +++ b/webrtc/WebRtcPlayer.h @@ -28,10 +28,8 @@ protected: private: WebRtcPlayer(const EventPoller::Ptr &poller, const RtspMediaSource::Ptr &src, const MediaInfo &info); - void beforeSendRtp(const RtpPacket::Ptr &rtp, bool flush, bool rtx = false); private: - bool _can_send_rtp[TrackMax]; //媒体相关元数据 MediaInfo _media_info; //播放的rtsp源 diff --git a/webrtc/WebRtcTransport.cpp b/webrtc/WebRtcTransport.cpp index c7a8106f..28ce411c 100644 --- a/webrtc/WebRtcTransport.cpp +++ b/webrtc/WebRtcTransport.cpp @@ -372,7 +372,10 @@ void WebRtcTransportImp::onStartWebRTC() { track->rtcp_context_send = std::make_shared(); //rtp track type --> MediaTrack - _type_to_track[m_answer.type] = track; + if (m_answer.direction == RtpDirection::sendonly || m_answer.direction == RtpDirection::sendrecv) { + //该类型的track 才支持发送 + _type_to_track[m_answer.type] = track; + } //send ssrc --> MediaTrack _ssrc_to_track[track->answer_ssrc_rtp] = track; _ssrc_to_track[track->answer_ssrc_rtx] = track;