mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 19:00:01 +08:00
修复webrtc纯音频推流时不能注册流的bug:#963
This commit is contained in:
parent
039be5444e
commit
6220db77e8
@ -1034,15 +1034,17 @@ string RtcSession::toRtspSdp() const{
|
||||
switch (m.type) {
|
||||
case TrackAudio:
|
||||
case TrackVideo: {
|
||||
if (m.direction != RtpDirection::inactive) {
|
||||
copy.media.emplace_back(m);
|
||||
copy.media.back().plan.resize(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
continue;
|
||||
default: continue;
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(!copy.media.empty());
|
||||
auto sdp = copy.toRtcSessionSdp();
|
||||
toRtsp(sdp->items);
|
||||
int i = 0;
|
||||
@ -1368,6 +1370,18 @@ bool RtcSession::supportRtcpFb(const string &name, TrackType type) const {
|
||||
return ref.find(name) != ref.end();
|
||||
}
|
||||
|
||||
bool RtcSession::supportSimulcast() const {
|
||||
for (auto &m : media) {
|
||||
if (!m.rtp_rids.empty()) {
|
||||
return true;
|
||||
}
|
||||
if (!m.rtp_ssrc_sim.empty()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
string const SdpConst::kTWCCRtcpFb = "transport-cc";
|
||||
string const SdpConst::kRembRtcpFb = "goog-remb";
|
||||
|
||||
|
@ -673,6 +673,7 @@ public:
|
||||
const RtcMedia *getMedia(TrackType type) const;
|
||||
bool haveSSRC() const;
|
||||
bool supportRtcpFb(const string &name, TrackType type = TrackType::TrackVideo) const;
|
||||
bool supportSimulcast() const;
|
||||
|
||||
private:
|
||||
RtcSessionSdp::Ptr toRtcSessionSdp() const;
|
||||
|
@ -448,6 +448,7 @@ void WebRtcTransportImp::onStartWebRTC() {
|
||||
|
||||
if (canRecvRtp()) {
|
||||
_push_src->setSdp(getSdp(SdpType::answer).toRtspSdp());
|
||||
_simulcast = getSdp(SdpType::answer).supportSimulcast();
|
||||
}
|
||||
if (canSendRtp()) {
|
||||
_reader = _play_src->getRing()->attach(getPoller(), true);
|
||||
@ -794,7 +795,12 @@ void WebRtcTransportImp::onSortedRtp(MediaTrack &track, const string &rid, RtpPa
|
||||
}
|
||||
}
|
||||
|
||||
if (_push_src) {
|
||||
if (!_simulcast) {
|
||||
assert(_push_src);
|
||||
_push_src->onWrite(rtp, false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (rtp->type == TrackAudio) {
|
||||
//音频
|
||||
for (auto &pr : _push_src_simulcast) {
|
||||
@ -814,7 +820,6 @@ void WebRtcTransportImp::onSortedRtp(MediaTrack &track, const string &rid, RtpPa
|
||||
src->onWrite(std::move(rtp), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -901,7 +906,7 @@ int WebRtcTransportImp::totalReaderCount(MediaSource &sender) {
|
||||
for (auto &src : _push_src_simulcast) {
|
||||
total_count += src.second->totalReaderCount();
|
||||
}
|
||||
return total_count;
|
||||
return total_count + _push_src->totalReaderCount();
|
||||
}
|
||||
|
||||
MediaOriginType WebRtcTransportImp::getOriginType(MediaSource &sender) const {
|
||||
|
@ -219,6 +219,7 @@ private:
|
||||
void createRtpChannel(const string &rid, uint32_t ssrc, const MediaTrack::Ptr &track);
|
||||
|
||||
private:
|
||||
bool _simulcast = false;
|
||||
uint16_t _rtx_seq[2] = {0, 0};
|
||||
//用掉的总流量
|
||||
uint64_t _bytes_usage = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user