Commit c5b04855 by ziyue

修复sps太长生成sdp异常的问题

parent 51ac93a0
...@@ -238,22 +238,22 @@ public: ...@@ -238,22 +238,22 @@ public:
_printer << "a=rtpmap:" << payload_type << " H264/" << 90000 << "\r\n"; _printer << "a=rtpmap:" << payload_type << " H264/" << 90000 << "\r\n";
_printer << "a=fmtp:" << payload_type << " packetization-mode=1; profile-level-id="; _printer << "a=fmtp:" << payload_type << " packetization-mode=1; profile-level-id=";
char strTemp[100]; char strTemp[1024];
uint32_t profile_level_id = 0; uint32_t profile_level_id = 0;
if (strSPS.length() >= 4) { // sanity check if (strSPS.length() >= 4) { // sanity check
profile_level_id = (uint8_t(strSPS[1]) << 16) | profile_level_id = (uint8_t(strSPS[1]) << 16) |
(uint8_t(strSPS[2]) << 8) | (uint8_t(strSPS[2]) << 8) |
(uint8_t(strSPS[3])); // profile_idc|constraint_setN_flag|level_idc (uint8_t(strSPS[3])); // profile_idc|constraint_setN_flag|level_idc
} }
memset(strTemp, 0, 100); memset(strTemp, 0, sizeof(strTemp));
snprintf(strTemp, sizeof(strTemp), "%06X", profile_level_id); snprintf(strTemp, sizeof(strTemp), "%06X", profile_level_id);
_printer << strTemp; _printer << strTemp;
_printer << "; sprop-parameter-sets="; _printer << "; sprop-parameter-sets=";
memset(strTemp, 0, 100); memset(strTemp, 0, sizeof(strTemp));
av_base64_encode(strTemp, 100, (uint8_t *) strSPS.data(), (int) strSPS.size()); av_base64_encode(strTemp, sizeof(strTemp), (uint8_t *) strSPS.data(), (int) strSPS.size());
_printer << strTemp << ","; _printer << strTemp << ",";
memset(strTemp, 0, 100); memset(strTemp, 0, sizeof(strTemp));
av_base64_encode(strTemp, 100, (uint8_t *) strPPS.data(), (int) strPPS.size()); av_base64_encode(strTemp, sizeof(strTemp), (uint8_t *) strPPS.data(), (int) strPPS.size());
_printer << strTemp << "\r\n"; _printer << strTemp << "\r\n";
_printer << "a=control:trackID=" << (int) TrackVideo << "\r\n"; _printer << "a=control:trackID=" << (int) TrackVideo << "\r\n";
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论