aac config不再限制两个字节:#336

This commit is contained in:
xiongziliang 2020-06-11 17:19:10 +08:00
parent 6b7e4f5f52
commit 0e47dc94f9
3 changed files with 15 additions and 15 deletions

View File

@ -77,7 +77,7 @@ public:
if(aac_cfg.size() < 2){ if(aac_cfg.size() < 2){
throw std::invalid_argument("adts配置必须最少2个字节"); throw std::invalid_argument("adts配置必须最少2个字节");
} }
_cfg = aac_cfg.substr(0,2); _cfg = aac_cfg;
onReady(); onReady();
} }
@ -185,8 +185,12 @@ public:
_printer << "b=AS:" << bitrate << "\r\n"; _printer << "b=AS:" << bitrate << "\r\n";
_printer << "a=rtpmap:" << payload_type << " MPEG4-GENERIC/" << sample_rate << "/" << channels << "\r\n"; _printer << "a=rtpmap:" << payload_type << " MPEG4-GENERIC/" << sample_rate << "/" << channels << "\r\n";
char configStr[32] = {0}; string configStr;
snprintf(configStr, sizeof(configStr), "%02X%02X", (uint8_t)aac_cfg[0], (uint8_t)aac_cfg[1]); char buf[4] = {0};
for(auto &ch : aac_cfg){
snprintf(buf, sizeof(buf), "%02X", (uint8_t)ch);
configStr.append(buf);
}
_printer << "a=fmtp:" << payload_type << " streamtype=5;profile-level-id=1;mode=AAC-hbr;" _printer << "a=fmtp:" << payload_type << " streamtype=5;profile-level-id=1;mode=AAC-hbr;"
<< "sizelength=13;indexlength=3;indexdeltalength=3;config=" << configStr << "\r\n"; << "sizelength=13;indexlength=3;indexdeltalength=3;config=" << configStr << "\r\n";
_printer << "a=control:trackID=" << (int)TrackAudio << "\r\n"; _printer << "a=control:trackID=" << (int)TrackAudio << "\r\n";

View File

@ -33,17 +33,12 @@ Track::Ptr Factory::getTrackBySdp(const SdpTrack::Ptr &track) {
return nullptr; return nullptr;
} }
string aac_cfg; string aac_cfg;
for(int i = 0 ; i < aac_cfg_str.size() / 2 ; ++i ){
unsigned int cfg1; unsigned int cfg;
sscanf(aac_cfg_str.substr(0, 2).data(), "%02X", &cfg1); sscanf(aac_cfg_str.substr(i * 2, 2).data(), "%02X", &cfg);
cfg1 &= 0x00FF; cfg &= 0x00FF;
aac_cfg.push_back(cfg1); aac_cfg.push_back((char)cfg);
}
unsigned int cfg2;
sscanf(aac_cfg_str.substr(2, 2).data(), "%02X", &cfg2);
cfg2 &= 0x00FF;
aac_cfg.push_back(cfg2);
return std::make_shared<AACTrack>(aac_cfg); return std::make_shared<AACTrack>(aac_cfg);
} }

View File

@ -202,7 +202,8 @@ void MP4Muxer::addTrack(const Track::Ptr &track) {
audio_track->getAudioChannel(), audio_track->getAudioChannel(),
audio_track->getAudioSampleBit() * audio_track->getAudioChannel(), audio_track->getAudioSampleBit() * audio_track->getAudioChannel(),
audio_track->getAudioSampleRate(), audio_track->getAudioSampleRate(),
audio_track->getAacCfg().data(), 2); audio_track->getAacCfg().data(),
audio_track->getAacCfg().size());
if(track_id < 0){ if(track_id < 0){
WarnL << "添加AAC Track失败:" << track_id; WarnL << "添加AAC Track失败:" << track_id;
return; return;