mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-01 00:57:28 +08:00
70 lines
1.4 KiB
C
70 lines
1.4 KiB
C
|
//
|
|||
|
// Created by xzl on 2018/10/24.
|
|||
|
//
|
|||
|
|
|||
|
#ifndef ZLMEDIAKIT_AACRTMPCODEC_H
|
|||
|
#define ZLMEDIAKIT_AACRTMPCODEC_H
|
|||
|
|
|||
|
#include "RtmpCodec.h"
|
|||
|
|
|||
|
namespace ZL{
|
|||
|
namespace Rtmp {
|
|||
|
/**
|
|||
|
* aac Rtmp转adts类
|
|||
|
*/
|
|||
|
class AACRtmpDecoder : public RtmpCodec , public ResourcePoolHelper<AACFrame> {
|
|||
|
public:
|
|||
|
typedef std::shared_ptr<AACRtmpDecoder> Ptr;
|
|||
|
|
|||
|
AACRtmpDecoder();
|
|||
|
~AACRtmpDecoder() {}
|
|||
|
|
|||
|
/**
|
|||
|
* 输入Rtmp并解码
|
|||
|
* @param Rtmp Rtmp数据包
|
|||
|
* @param key_pos 此参数内部强制转换为false,请忽略之
|
|||
|
*/
|
|||
|
bool inputRtmp(const RtmpPacket::Ptr &Rtmp, bool key_pos = false) override;
|
|||
|
|
|||
|
TrackType getTrackType() const override{
|
|||
|
return TrackAudio;
|
|||
|
}
|
|||
|
|
|||
|
CodecId getCodecId() const override{
|
|||
|
return CodecAAC;
|
|||
|
}
|
|||
|
|
|||
|
protected:
|
|||
|
void onGetAAC(const char* pcData, int iLen, uint32_t ui32TimeStamp);
|
|||
|
AACFrame::Ptr obtainFrame();
|
|||
|
protected:
|
|||
|
AACFrame::Ptr _adts;
|
|||
|
string _aac_cfg;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* aac adts转Rtmp类
|
|||
|
*/
|
|||
|
class AACRtmpEncoder : public AACRtmpDecoder , public ResourcePoolHelper<RtmpPacket> {
|
|||
|
public:
|
|||
|
typedef std::shared_ptr<AACRtmpEncoder> Ptr;
|
|||
|
|
|||
|
AACRtmpEncoder();
|
|||
|
~AACRtmpEncoder() {}
|
|||
|
|
|||
|
/**
|
|||
|
* 输入aac 数据,必须带dats头
|
|||
|
* @param frame 带dats头的aac数据
|
|||
|
*/
|
|||
|
void inputFrame(const Frame::Ptr &frame) override;
|
|||
|
|
|||
|
private:
|
|||
|
void makeAudioConfigPkt();
|
|||
|
};
|
|||
|
|
|||
|
}//namespace Rtmp
|
|||
|
}//namespace ZL
|
|||
|
|
|||
|
#endif //ZLMEDIAKIT_AACRTMPCODEC_H
|