From d70d9bca21ab4ece575f03bac92d3c810e10f3af Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Thu, 25 Oct 2018 09:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=BC=82=E5=B8=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Common/Factory.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Common/Factory.cpp b/src/Common/Factory.cpp index c948a116..2e73df2f 100644 --- a/src/Common/Factory.cpp +++ b/src/Common/Factory.cpp @@ -15,6 +15,11 @@ Sdp::Ptr Factory::getSdpByTrack(const Track::Ptr &track) { case CodecH264:{ H264Track::Ptr h264Track = dynamic_pointer_cast(track); if(!h264Track){ + WarnL << "该Track不是H264Track类型"; + return nullptr; + } + if(!h264Track->ready()){ + WarnL << "该Track未准备好"; return nullptr; } return std::make_shared(h264Track->getSps(),h264Track->getPps()); @@ -23,12 +28,17 @@ Sdp::Ptr Factory::getSdpByTrack(const Track::Ptr &track) { case CodecAAC:{ AACTrack::Ptr aacTrack = dynamic_pointer_cast(track); if(!aacTrack){ + WarnL << "该Track不是AACTrack类型"; + return nullptr; + } + if(!aacTrack->ready()){ + WarnL << "该Track未准备好"; return nullptr; } return std::make_shared(aacTrack->getAacCfg(),aacTrack->getAudioSampleRate()); } - default: + WarnL << "暂不支持的CodecId:" << track->getCodecId(); return nullptr; } } @@ -41,7 +51,8 @@ Track::Ptr Factory::getTrackBySdp(const string &sdp) { aac_cfg_str = FindField(sdp.c_str(), "config=", ";"); } if (aac_cfg_str.size() != 4) { - return nullptr; + //延后获取adts头 + return std::make_shared(); } string aac_cfg; @@ -74,7 +85,7 @@ Track::Ptr Factory::getTrackBySdp(const string &sdp) { return std::make_shared(sps,pps,0,0); } - + WarnL << "暂不支持该sdp:" << sdp; return nullptr; } @@ -116,6 +127,7 @@ Track::Ptr Factory::getTrackByCodecId(CodecId codecId) { return std::make_shared(); } default: + WarnL << "暂不支持该CodecId:" << codecId; return nullptr; } } @@ -124,6 +136,7 @@ Track::Ptr Factory::getTrackByCodecId(CodecId codecId) { Track::Ptr Factory::getTrackByAmf(const AMFValue &amf) { CodecId codecId = getCodecIdByAmf(amf); if(codecId == CodecInvalid){ + WarnL << "暂不支持该Amf:" << amf.type(); return nullptr; } return getTrackByCodecId(codecId); @@ -142,6 +155,7 @@ RtpCodec::Ptr Factory::getRtpEncoderById(CodecId codecId, case CodecAAC: return std::make_shared(ui32Ssrc,ui32MtuSize,ui32SampleRate,ui8PlayloadType,ui8Interleaved); default: + WarnL << "暂不支持该CodecId:" << codecId; return nullptr; } } @@ -153,6 +167,7 @@ RtpCodec::Ptr Factory::getRtpDecoderById(CodecId codecId, uint32_t ui32SampleRat case CodecAAC: return std::make_shared(ui32SampleRate); default: + WarnL << "暂不支持该CodecId:" << codecId; return nullptr; } } @@ -164,6 +179,7 @@ RtmpCodec::Ptr Factory::getRtmpCodecById(CodecId codecId) { case CodecAAC: return std::make_shared(); default: + WarnL << "暂不支持该CodecId:" << codecId; return nullptr; } }