diff --git a/src/Extension/Factory.cpp b/src/Extension/Factory.cpp index 63cab300..11b5acc3 100644 --- a/src/Extension/Factory.cpp +++ b/src/Extension/Factory.cpp @@ -58,7 +58,7 @@ Sdp::Ptr Factory::getSdpByTrack(const Track::Ptr &track) { WarnL << "该Track未准备好"; return nullptr; } - return std::make_shared(h265Track->getSps(),h265Track->getPps()); + return std::make_shared(h265Track->getVps(),h265Track->getSps(),h265Track->getPps()); } case CodecAAC:{ diff --git a/src/Extension/H265.h b/src/Extension/H265.h index cdd78555..44c330a4 100644 --- a/src/Extension/H265.h +++ b/src/Extension/H265.h @@ -358,7 +358,8 @@ public: * @param playload_type rtp playload type 默认96 * @param bitrate 比特率 */ - H265Sdp(const string &strSPS, + H265Sdp(const string &strVPS, + const string &strSPS, const string &strPPS, int playload_type = 96, int bitrate = 4000) : Sdp(90000,playload_type) { @@ -366,7 +367,10 @@ public: _printer << "m=video 0 RTP/AVP " << playload_type << "\r\n"; _printer << "b=AS:" << bitrate << "\r\n"; _printer << "a=rtpmap:" << playload_type << " H265/" << 90000 << "\r\n"; - _printer << "a=fmtp:" << playload_type << " sprop-sps="; + _printer << "a=fmtp:" << playload_type << " "; + _printer << "sprop-vps="; + _printer << encodeBase64(strVPS) << "; "; + _printer << "sprop-sps="; _printer << encodeBase64(strSPS) << "; "; _printer << "sprop-pps="; _printer << encodeBase64(strPPS) << "\r\n";