WebRTC: Fix no audio and video issue for Firefox. (#3079)

* Remove extern SrsPps* duplicate declarations

* fix(rtmp2rtc): fix video payload type for rtmp to rtc bridge (#3041)

* Revert changes not belongs to this PR.

* Fix naming issue, follow SRS style.

* Use srs_assert instead of assert.

* Fix firefox no audio issue.

Co-authored-by: winlin <winlin@vip.126.com>
pull/3265/head
johzzy 2 years ago committed by GitHub
parent 62ab1a1c69
commit 6eb10afca2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -710,6 +710,7 @@ srs_error_t SrsRtcSource::on_timer(srs_utime_t interval)
}
#ifdef SRS_FFMPEG_FIT
SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
{
req = NULL;
@ -729,6 +730,8 @@ SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
if (!descs.empty()) {
audio_ssrc = descs.at(0)->ssrc_;
}
// Note we must use the PT of source, see https://github.com/ossrs/srs/pull/3079
audio_payload_type_ = descs.empty() ? kAudioPayloadType : descs.front()->media_->pt_;
}
// video track ssrc
@ -737,6 +740,8 @@ SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
if (!descs.empty()) {
video_ssrc = descs.at(0)->ssrc_;
}
// Note we must use the PT of source, see https://github.com/ossrs/srs/pull/3079
video_payload_type_ = descs.empty() ? kVideoPayloadType : descs.front()->media_->pt_;
}
}
@ -910,7 +915,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_opus(SrsAudioFrame* audio, SrsRtpPacke
{
srs_error_t err = srs_success;
pkt->header.set_payload_type(kAudioPayloadType);
pkt->header.set_payload_type(audio_payload_type_);
pkt->header.set_ssrc(audio_ssrc);
pkt->frame_type = SrsFrameTypeAudio;
pkt->header.set_marker(true);
@ -1054,7 +1059,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_stap_a(SrsRtcSource* source, SrsShared
return srs_error_new(ERROR_RTC_RTP_MUXER, "sps/pps empty");
}
pkt->header.set_payload_type(kVideoPayloadType);
pkt->header.set_payload_type(video_payload_type_);
pkt->header.set_ssrc(video_ssrc);
pkt->frame_type = SrsFrameTypeVideo;
pkt->nalu_type = (SrsAvcNaluType)kStapA;
@ -1136,7 +1141,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_nalus(SrsSharedPtrMessage* msg, const
SrsRtpPacket* pkt = new SrsRtpPacket();
pkts.push_back(pkt);
pkt->header.set_payload_type(kVideoPayloadType);
pkt->header.set_payload_type(video_payload_type_);
pkt->header.set_ssrc(video_ssrc);
pkt->frame_type = SrsFrameTypeVideo;
pkt->nalu_type = (SrsAvcNaluType)first_nalu_type;
@ -1170,7 +1175,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_nalus(SrsSharedPtrMessage* msg, const
SrsRtpPacket* pkt = new SrsRtpPacket();
pkts.push_back(pkt);
pkt->header.set_payload_type(kVideoPayloadType);
pkt->header.set_payload_type(video_payload_type_);
pkt->header.set_ssrc(video_ssrc);
pkt->frame_type = SrsFrameTypeVideo;
pkt->nalu_type = (SrsAvcNaluType)kFuA;
@ -1200,7 +1205,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_single_nalu(SrsSharedPtrMessage* msg,
SrsRtpPacket* pkt = new SrsRtpPacket();
pkts.push_back(pkt);
pkt->header.set_payload_type(kVideoPayloadType);
pkt->header.set_payload_type(video_payload_type_);
pkt->header.set_ssrc(video_ssrc);
pkt->frame_type = SrsFrameTypeVideo;
pkt->header.set_sequence(video_sequence++);
@ -1233,7 +1238,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_fu_a(SrsSharedPtrMessage* msg, SrsSamp
SrsRtpPacket* pkt = new SrsRtpPacket();
pkts.push_back(pkt);
pkt->header.set_payload_type(kVideoPayloadType);
pkt->header.set_payload_type(video_payload_type_);
pkt->header.set_ssrc(video_ssrc);
pkt->frame_type = SrsFrameTypeVideo;
pkt->header.set_sequence(video_sequence++);

@ -261,6 +261,8 @@ private:
uint16_t video_sequence;
uint32_t audio_ssrc;
uint32_t video_ssrc;
uint8_t audio_payload_type_;
uint8_t video_payload_type_;
public:
SrsRtcFromRtmpBridge(SrsRtcSource* source);
virtual ~SrsRtcFromRtmpBridge();

Loading…
Cancel
Save