mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-26 20:47:08 +08:00
aac config不再限制两个字节:#336
This commit is contained in:
parent
6b7e4f5f52
commit
0e47dc94f9
@ -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";
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user