From a93628bd356ed854b1ea645ae2f39f45e5708be1 Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Thu, 24 Aug 2017 09:54:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=A0aac=E4=B8=8D?= =?UTF-8?q?=E5=B8=A6adts=E5=A4=B4=E8=BE=93=E5=85=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Device/Device.cpp | 8 +++++--- src/Device/Device.h | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Device/Device.cpp b/src/Device/Device.cpp index 01ab382f..37e4e02f 100644 --- a/src/Device/Device.cpp +++ b/src/Device/Device.cpp @@ -108,6 +108,9 @@ void DevChannel::inputH264(char* pcData, int iDataLen, uint32_t uiStamp) { } void DevChannel::inputAAC(char* pcData, int iDataLen, uint32_t uiStamp) { + inputAAC(pcData+7,iDataLen-7,uiStamp,pcData); +} +void DevChannel::inputAAC(char *pcDataWithoutAdts,int iDataLen, uint32_t uiStamp,char *pcAdtsHeader){ if (!m_pRtpMaker_aac) { uint32_t ssrc; memcpy(&ssrc, makeRandStr(8, false).data() + 4, 4); @@ -118,10 +121,9 @@ void DevChannel::inputAAC(char* pcData, int iDataLen, uint32_t uiStamp) { m_pRtpMaker_aac.reset(new RtpMaker_AAC(lam, ssrc, audioMtu,m_audio->iSampleRate)); } if (!m_bSdp_gotAAC && m_audio) { - makeSDP_AAC((unsigned char*) pcData, iDataLen); + makeSDP_AAC((unsigned char*) pcAdtsHeader, iDataLen); } - m_pRtpMaker_aac->makeRtp(pcData + 7, iDataLen - 7, uiStamp); - + m_pRtpMaker_aac->makeRtp(pcDataWithoutAdts, iDataLen, uiStamp); } inline void DevChannel::makeSDP_264(unsigned char *pcData, int iDataLen) { diff --git a/src/Device/Device.h b/src/Device/Device.h index 3c4582d2..93414dee 100644 --- a/src/Device/Device.h +++ b/src/Device/Device.h @@ -59,7 +59,8 @@ public: void inputPCM(char *pcData, int iDataLen, uint32_t uiStamp); void inputH264(char *pcData, int iDataLen, uint32_t uiStamp); - void inputAAC(char *pcData, int iDataLen, uint32_t uiStamp); + void inputAAC(char *pcDataWithAdts, int iDataLen, uint32_t uiStamp); + void inputAAC(char *pcDataWithoutAdts,int iDataLen, uint32_t uiStamp,char *pcAdtsHeader); #ifdef ENABLE_RTSP2RTMP int readerCount() { return m_mediaSrc ? m_mediaSrc->readerCount() : 0;