简化接口

This commit is contained in:
xiongziliang
2020-04-18 23:56:27 +08:00
parent e1459834df
commit 49596bd97f
4 changed files with 106 additions and 191 deletions

View File

@@ -30,7 +30,6 @@ using namespace toolkit;
#include "Codec/H264Encoder.h"
#endif //ENABLE_X264
namespace mediakit {
class VideoInfo {
@@ -40,90 +39,82 @@ public:
int iHeight;
float iFrameRate;
};
class AudioInfo {
public:
CodecId codecId = CodecAAC;
int iChannel;
int iSampleBit;
int iSampleRate;
int iProfile;
};
/**
* 该类已经废弃,保留只为兼容旧代码,请直接使用MultiMediaSourceMuxer类
* MultiMediaSourceMuxer类的包装,方便初学者使用
*/
class DevChannel : public MultiMediaSourceMuxer{
public:
typedef std::shared_ptr<DevChannel> Ptr;
//fDuration<=0为直播否则为点播
DevChannel(const string &strVhost,
const string &strApp,
const string &strId,
float fDuration = 0,
bool bEanbleRtsp = true,
bool bEanbleRtmp = true,
bool bEanbleHls = true,
bool bEnableMp4 = false);
DevChannel(const string &vhost,
const string &app,
const string &stream_id,
float duration = 0,
bool enable_rtsp = true,
bool enable_rtmp = true,
bool enable_hls = true,
bool enable_mp4 = false);
virtual ~DevChannel();
/**
* 初始化h264视频Track
* 相当于MultiMediaSourceMuxer::addTrack(H264Track::Ptr );
* 初始化视频Track
* 相当于MultiMediaSourceMuxer::addTrack(VideoTrack::Ptr );
* @param info 视频相关信息
*/
void initVideo(const VideoInfo &info);
/**
* 初始化aac音频Track
* 相当于MultiMediaSourceMuxer::addTrack(AACTrack::Ptr );
* 初始化音频Track
* 相当于MultiMediaSourceMuxer::addTrack(AudioTrack::Ptr );
* @param info 音频相关信息
*/
void initAudio(const AudioInfo &info);
/**
* 输入264帧
* @param pcData 264单帧数据指针
* @param iDataLen 数据指针长度
* @param data 264单帧数据指针
* @param len 数据指针长度
* @param dts 解码时间戳单位毫秒等于0时内部会自动生成时间戳
* @param pts 播放时间戳单位毫秒等于0时内部会赋值为dts
*/
void inputH264(const char *pcData, int iDataLen, uint32_t dts,uint32_t pts = 0);
void inputH264(const char *data, int len, uint32_t dts, uint32_t pts = 0);
/**
* 输入265帧
* @param pcData 265单帧数据指针
* @param iDataLen 数据指针长度
* @param data 265单帧数据指针
* @param len 数据指针长度
* @param dts 解码时间戳单位毫秒等于0时内部会自动生成时间戳
* @param pts 播放时间戳单位毫秒等于0时内部会赋值为dts
*/
void inputH265(const char *pcData, int iDataLen, uint32_t dts,uint32_t pts = 0);
void inputH265(const char *data, int len, uint32_t dts, uint32_t pts = 0);
/**
* 输入可能带adts头的aac帧
* @param pcDataWithAdts 可能带adts头的aac帧
* @param iDataLen 帧数据长度
* @param uiStamp 时间戳,单位毫秒等于0时内部会自动生成时间戳
* @param withAdtsHeader 是否带adts头
* 输入aac帧
* @param data_without_adts 带adts头的aac帧
* @param len 帧数据长度
* @param dts 时间戳,单位毫秒
* @param adts_header adts头
*/
void inputAAC(const char *pcDataWithAdts, int iDataLen, uint32_t uiStamp, bool withAdtsHeader = true);
/**
* 输入不带adts头的aac帧
* @param pcDataWithoutAdts 不带adts头的aac帧
* @param iDataLen 帧数据长度
* @param uiStamp 时间戳,单位毫秒
* @param pcAdtsHeader adts头
*/
void inputAAC(const char *pcDataWithoutAdts,int iDataLen, uint32_t uiStamp,const char *pcAdtsHeader);
void inputAAC(const char *data_without_adts, int len, uint32_t dts, const char *adts_header);
/**
* G711音频帧
* @param pcData 音频帧
* @param iDataLen 帧数据长度
* @param uiStamp 时间戳,单位毫秒
* @param data 音频帧
* @param len 帧数据长度
* @param dts 时间戳,单位毫秒
*/
void inputG711(const char* pcData, int iDataLen, uint32_t uiStamp);
void inputG711(const char* data, int len, uint32_t dts);
#ifdef ENABLE_X264
/**
* 输入yuv420p视频帧内部会完成编码并调用inputH264方法
@@ -146,6 +137,7 @@ public:
#endif //ENABLE_FAAC
private:
#ifdef ENABLE_X264
std::shared_ptr<H264Encoder> _pH264Enc;
#endif //ENABLE_X264
@@ -155,9 +147,7 @@ private:
#endif //ENABLE_FAAC
std::shared_ptr<VideoInfo> _video;
std::shared_ptr<AudioInfo> _audio;
SmoothTicker _aTicker[2];
uint8_t _adtsHeader[7];
};
} /* namespace mediakit */