mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 19:00:01 +08:00
H264 rtsp sdp生成正确的packetization-mode (#2691)
This commit is contained in:
parent
25d5e410c3
commit
09aa38334e
@ -12,9 +12,10 @@
|
|||||||
#include "SPSParser.h"
|
#include "SPSParser.h"
|
||||||
#include "Util/logger.h"
|
#include "Util/logger.h"
|
||||||
#include "Util/base64.h"
|
#include "Util/base64.h"
|
||||||
|
#include "Common/config.h"
|
||||||
|
|
||||||
using namespace toolkit;
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
using namespace toolkit;
|
||||||
|
|
||||||
namespace mediakit {
|
namespace mediakit {
|
||||||
|
|
||||||
@ -248,7 +249,14 @@ public:
|
|||||||
_printer << "b=AS:" << bitrate << "\r\n";
|
_printer << "b=AS:" << bitrate << "\r\n";
|
||||||
}
|
}
|
||||||
_printer << "a=rtpmap:" << payload_type << " " << getCodecName() << "/" << 90000 << "\r\n";
|
_printer << "a=rtpmap:" << payload_type << " " << getCodecName() << "/" << 90000 << "\r\n";
|
||||||
_printer << "a=fmtp:" << payload_type << " packetization-mode=1; profile-level-id=";
|
|
||||||
|
/**
|
||||||
|
Single NAI Unit Mode = 0. // Single NAI mode (Only nals from 1-23 are allowed)
|
||||||
|
Non Interleaved Mode = 1,// Non-interleaved Mode: 1-23,24 (STAP-A),28 (FU-A) are allowed
|
||||||
|
Interleaved Mode = 2, // 25 (STAP-B),26 (MTAP16),27 (MTAP24),28 (EU-A),and 29 (EU-B) are allowed.
|
||||||
|
**/
|
||||||
|
GET_CONFIG(bool, h264_stap_a, Rtp::kH264StapA);
|
||||||
|
_printer << "a=fmtp:" << payload_type << " packetization-mode=" << h264_stap_a << "; profile-level-id=";
|
||||||
|
|
||||||
uint32_t profile_level_id = 0;
|
uint32_t profile_level_id = 0;
|
||||||
if (strSPS.length() >= 4) { // sanity check
|
if (strSPS.length() >= 4) { // sanity check
|
||||||
|
@ -1816,11 +1816,17 @@ bool RtcConfigure::onCheckCodecProfile(const RtcCodecPlan &plan, CodecId codec)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Single NAI Unit Mode = 0. // Single NAI mode (Only nals from 1-23 are allowed)
|
||||||
|
Non Interleaved Mode = 1,// Non-interleaved Mode: 1-23,24 (STAP-A),28 (FU-A) are allowed
|
||||||
|
Interleaved Mode = 2, // 25 (STAP-B),26 (MTAP16),27 (MTAP24),28 (EU-A),and 29 (EU-B) are allowed.
|
||||||
|
**/
|
||||||
void RtcConfigure::onSelectPlan(RtcCodecPlan &plan, CodecId codec) const {
|
void RtcConfigure::onSelectPlan(RtcCodecPlan &plan, CodecId codec) const {
|
||||||
if (_rtsp_video_plan && codec == CodecH264 && getCodecId(_rtsp_video_plan->codec) == CodecH264) {
|
if (_rtsp_video_plan && codec == CodecH264 && getCodecId(_rtsp_video_plan->codec) == CodecH264) {
|
||||||
// h264时,设置packetization-mod为一致
|
// h264时,设置packetization-mod为一致
|
||||||
auto mode = _rtsp_video_plan->fmtp[kMode];
|
auto mode = _rtsp_video_plan->fmtp[kMode];
|
||||||
plan.fmtp[kMode] = mode.empty() ? "0" : mode;
|
GET_CONFIG(bool, h264_stap_a, Rtp::kH264StapA);
|
||||||
|
plan.fmtp[kMode] = mode.empty() ? std::to_string(h264_stap_a) : mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user