diff --git a/src/Extension/G711.cpp b/src/Extension/G711.cpp index eab141ce..c883a973 100644 --- a/src/Extension/G711.cpp +++ b/src/Extension/G711.cpp @@ -58,7 +58,18 @@ Sdp::Ptr G711Track::getSdp() { WarnL << getCodecName() << " Track未准备好"; return nullptr; } - return std::make_shared(getCodecId(), getAudioSampleRate(), getAudioChannel(), getBitRate() / 1024); + + const auto codec = getCodecId(); + const auto sample_rate = getAudioSampleRate(); + const auto audio_channel = getAudioChannel(); + const auto bitrate = getBitRate() >> 10; + auto payload_type = 98; + if (sample_rate == 8000 && audio_channel == 1) { + // https://datatracker.ietf.org/doc/html/rfc3551#section-6 + payload_type = (codec == CodecG711U) ? Rtsp::PT_PCMU : Rtsp::PT_PCMA; + } + + return std::make_shared(codec, sample_rate, audio_channel, bitrate, payload_type); } }//namespace mediakit