mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
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>
This commit is contained in:
parent
62ab1a1c69
commit
6eb10afca2
2 changed files with 13 additions and 6 deletions
|
@ -710,6 +710,7 @@ srs_error_t SrsRtcSource::on_timer(srs_utime_t interval)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SRS_FFMPEG_FIT
|
#ifdef SRS_FFMPEG_FIT
|
||||||
|
|
||||||
SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
|
SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
|
||||||
{
|
{
|
||||||
req = NULL;
|
req = NULL;
|
||||||
|
@ -729,6 +730,8 @@ SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
|
||||||
if (!descs.empty()) {
|
if (!descs.empty()) {
|
||||||
audio_ssrc = descs.at(0)->ssrc_;
|
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
|
// video track ssrc
|
||||||
|
@ -737,6 +740,8 @@ SrsRtcFromRtmpBridge::SrsRtcFromRtmpBridge(SrsRtcSource* source)
|
||||||
if (!descs.empty()) {
|
if (!descs.empty()) {
|
||||||
video_ssrc = descs.at(0)->ssrc_;
|
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;
|
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->header.set_ssrc(audio_ssrc);
|
||||||
pkt->frame_type = SrsFrameTypeAudio;
|
pkt->frame_type = SrsFrameTypeAudio;
|
||||||
pkt->header.set_marker(true);
|
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");
|
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->header.set_ssrc(video_ssrc);
|
||||||
pkt->frame_type = SrsFrameTypeVideo;
|
pkt->frame_type = SrsFrameTypeVideo;
|
||||||
pkt->nalu_type = (SrsAvcNaluType)kStapA;
|
pkt->nalu_type = (SrsAvcNaluType)kStapA;
|
||||||
|
@ -1136,7 +1141,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_nalus(SrsSharedPtrMessage* msg, const
|
||||||
SrsRtpPacket* pkt = new SrsRtpPacket();
|
SrsRtpPacket* pkt = new SrsRtpPacket();
|
||||||
pkts.push_back(pkt);
|
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->header.set_ssrc(video_ssrc);
|
||||||
pkt->frame_type = SrsFrameTypeVideo;
|
pkt->frame_type = SrsFrameTypeVideo;
|
||||||
pkt->nalu_type = (SrsAvcNaluType)first_nalu_type;
|
pkt->nalu_type = (SrsAvcNaluType)first_nalu_type;
|
||||||
|
@ -1170,7 +1175,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_nalus(SrsSharedPtrMessage* msg, const
|
||||||
SrsRtpPacket* pkt = new SrsRtpPacket();
|
SrsRtpPacket* pkt = new SrsRtpPacket();
|
||||||
pkts.push_back(pkt);
|
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->header.set_ssrc(video_ssrc);
|
||||||
pkt->frame_type = SrsFrameTypeVideo;
|
pkt->frame_type = SrsFrameTypeVideo;
|
||||||
pkt->nalu_type = (SrsAvcNaluType)kFuA;
|
pkt->nalu_type = (SrsAvcNaluType)kFuA;
|
||||||
|
@ -1200,7 +1205,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_single_nalu(SrsSharedPtrMessage* msg,
|
||||||
SrsRtpPacket* pkt = new SrsRtpPacket();
|
SrsRtpPacket* pkt = new SrsRtpPacket();
|
||||||
pkts.push_back(pkt);
|
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->header.set_ssrc(video_ssrc);
|
||||||
pkt->frame_type = SrsFrameTypeVideo;
|
pkt->frame_type = SrsFrameTypeVideo;
|
||||||
pkt->header.set_sequence(video_sequence++);
|
pkt->header.set_sequence(video_sequence++);
|
||||||
|
@ -1233,7 +1238,7 @@ srs_error_t SrsRtcFromRtmpBridge::package_fu_a(SrsSharedPtrMessage* msg, SrsSamp
|
||||||
SrsRtpPacket* pkt = new SrsRtpPacket();
|
SrsRtpPacket* pkt = new SrsRtpPacket();
|
||||||
pkts.push_back(pkt);
|
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->header.set_ssrc(video_ssrc);
|
||||||
pkt->frame_type = SrsFrameTypeVideo;
|
pkt->frame_type = SrsFrameTypeVideo;
|
||||||
pkt->header.set_sequence(video_sequence++);
|
pkt->header.set_sequence(video_sequence++);
|
||||||
|
|
|
@ -261,6 +261,8 @@ private:
|
||||||
uint16_t video_sequence;
|
uint16_t video_sequence;
|
||||||
uint32_t audio_ssrc;
|
uint32_t audio_ssrc;
|
||||||
uint32_t video_ssrc;
|
uint32_t video_ssrc;
|
||||||
|
uint8_t audio_payload_type_;
|
||||||
|
uint8_t video_payload_type_;
|
||||||
public:
|
public:
|
||||||
SrsRtcFromRtmpBridge(SrsRtcSource* source);
|
SrsRtcFromRtmpBridge(SrsRtcSource* source);
|
||||||
virtual ~SrsRtcFromRtmpBridge();
|
virtual ~SrsRtcFromRtmpBridge();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue