优化rtmp性能

This commit is contained in:
xia-chu
2021-02-04 17:58:51 +08:00
parent 827158af73
commit bc6286553a
19 changed files with 88 additions and 72 deletions

View File

@@ -95,9 +95,7 @@ void AACRtmpEncoder::inputFrame(const Frame::Ptr &frame) {
}
if(!_aac_cfg.empty()){
RtmpPacket::Ptr rtmpPkt = ResourcePoolHelper<RtmpPacket>::obtainObj();
rtmpPkt->buffer.clear();
auto rtmpPkt = RtmpPacket::create();
//header
uint8_t is_config = false;
rtmpPkt->buffer.push_back(_audio_flv_flags);
@@ -117,8 +115,7 @@ void AACRtmpEncoder::inputFrame(const Frame::Ptr &frame) {
void AACRtmpEncoder::makeAudioConfigPkt() {
_audio_flv_flags = getAudioRtmpFlags(std::make_shared<AACTrack>(_aac_cfg));
RtmpPacket::Ptr rtmpPkt = ResourcePoolHelper<RtmpPacket>::obtainObj();
rtmpPkt->buffer.clear();
auto rtmpPkt = RtmpPacket::create();
//header
uint8_t is_config = true;

View File

@@ -47,7 +47,7 @@ private:
/**
* aac adts转Rtmp类
*/
class AACRtmpEncoder : public AACRtmpDecoder , public ResourcePoolHelper<RtmpPacket> {
class AACRtmpEncoder : public AACRtmpDecoder{
public:
typedef std::shared_ptr<AACRtmpEncoder> Ptr;

View File

@@ -49,8 +49,7 @@ void CommonRtmpEncoder::inputFrame(const Frame::Ptr &frame) {
if (!_audio_flv_flags) {
return;
}
RtmpPacket::Ptr rtmp = ResourcePoolHelper<RtmpPacket>::obtainObj();
rtmp->buffer.clear();
auto rtmp = RtmpPacket::create();
//header
rtmp->buffer.push_back(_audio_flv_flags);
//data

View File

@@ -53,7 +53,7 @@ private:
/**
* 通用 rtmp编码类
*/
class CommonRtmpEncoder : public CommonRtmpDecoder , public ResourcePoolHelper<RtmpPacket> {
class CommonRtmpEncoder : public CommonRtmpDecoder {
public:
typedef std::shared_ptr<CommonRtmpEncoder> Ptr;

View File

@@ -196,8 +196,7 @@ void H264RtmpEncoder::inputFrame(const Frame::Ptr &frame) {
bool is_config = false;
flags |= (((frame->configFrame() || frame->keyFrame()) ? FLV_KEY_FRAME : FLV_INTER_FRAME) << 4);
_lastPacket = ResourcePoolHelper<RtmpPacket>::obtainObj();
_lastPacket->buffer.clear();
_lastPacket = RtmpPacket::create();
_lastPacket->buffer.push_back(flags);
_lastPacket->buffer.push_back(!is_config);
int32_t cts = frame->pts() - frame->dts();
@@ -224,9 +223,7 @@ void H264RtmpEncoder::makeVideoConfigPkt() {
flags |= (FLV_KEY_FRAME << 4);
bool is_config = true;
RtmpPacket::Ptr rtmpPkt = ResourcePoolHelper<RtmpPacket>::obtainObj();
rtmpPkt->buffer.clear();
auto rtmpPkt = RtmpPacket::create();
//header
rtmpPkt->buffer.push_back(flags);
rtmpPkt->buffer.push_back(!is_config);

View File

@@ -52,7 +52,7 @@ protected:
/**
* 264 Rtmp打包类
*/
class H264RtmpEncoder : public H264RtmpDecoder, public ResourcePoolHelper<RtmpPacket> {
class H264RtmpEncoder : public H264RtmpDecoder{
public:
typedef std::shared_ptr<H264RtmpEncoder> Ptr;

View File

@@ -182,8 +182,7 @@ void H265RtmpEncoder::inputFrame(const Frame::Ptr &frame) {
bool is_config = false;
flags |= (((frame->configFrame() || frame->keyFrame()) ? FLV_KEY_FRAME : FLV_INTER_FRAME) << 4);
_lastPacket = ResourcePoolHelper<RtmpPacket>::obtainObj();
_lastPacket->buffer.clear();
_lastPacket = RtmpPacket::create();
_lastPacket->buffer.push_back(flags);
_lastPacket->buffer.push_back(!is_config);
auto cts = frame->pts() - frame->dts();
@@ -208,9 +207,7 @@ void H265RtmpEncoder::makeVideoConfigPkt() {
flags |= (FLV_KEY_FRAME << 4);
bool is_config = true;
RtmpPacket::Ptr rtmpPkt = ResourcePoolHelper<RtmpPacket>::obtainObj();
rtmpPkt->buffer.clear();
auto rtmpPkt = RtmpPacket::create();
//header
rtmpPkt->buffer.push_back(flags);
rtmpPkt->buffer.push_back(!is_config);

View File

@@ -50,7 +50,7 @@ protected:
/**
* 265 Rtmp打包类
*/
class H265RtmpEncoder : public H265RtmpDecoder, public ResourcePoolHelper<RtmpPacket> {
class H265RtmpEncoder : public H265RtmpDecoder{
public:
typedef std::shared_ptr<H265RtmpEncoder> Ptr;