mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-14 12:05:58 +08:00
完成AAC RTMP编解码类
This commit is contained in:
69
src/RtmpCodec/AACRtmpCodec.h
Normal file
69
src/RtmpCodec/AACRtmpCodec.h
Normal file
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// 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
|
||||
Reference in New Issue
Block a user