addTrack/inputFrame接口支持返回值;新增全局添加静音音频接口

This commit is contained in:
ziyue
2021-09-27 13:12:53 +08:00
parent 1f99708548
commit e9008afca0
63 changed files with 447 additions and 357 deletions

View File

@@ -97,11 +97,14 @@ public:
/**
* _demuxer触发的添加Track事件
*/
void addTrack(const Track::Ptr &track) override {
if(_muxer){
_muxer->addTrack(track);
track->addDelegate(_muxer);
bool addTrack(const Track::Ptr &track) override {
if (_muxer) {
if (_muxer->addTrack(track)) {
track->addDelegate(_muxer);
return true;
}
}
return false;
}
/**

View File

@@ -58,15 +58,16 @@ public:
MediaSourceEventInterceptor::onReaderChanged(sender, size);
}
void inputFrame(const Frame::Ptr &frame) override {
bool inputFrame(const Frame::Ptr &frame) override {
GET_CONFIG(bool, rtmp_demand, General::kRtmpDemand);
if (_clear_cache && rtmp_demand) {
_clear_cache = false;
_media_src->clearCache();
}
if (_enabled || !rtmp_demand) {
RtmpMuxer::inputFrame(frame);
return RtmpMuxer::inputFrame(frame);
}
return false;
}
bool isEnabled() {

View File

@@ -22,26 +22,25 @@ RtmpMuxer::RtmpMuxer(const TitleMeta::Ptr &title) {
_rtmp_ring = std::make_shared<RtmpRing::RingType>();
}
void RtmpMuxer::addTrack(const Track::Ptr &track) {
bool RtmpMuxer::addTrack(const Track::Ptr &track) {
auto &encoder = _encoder[track->getTrackType()];
//生成rtmp编码器,克隆该Track防止循环引用
encoder = Factory::getRtmpCodecByTrack(track->clone(), true);
if (!encoder) {
return;
return false;
}
//设置rtmp输出环形缓存
encoder->setRtmpRing(_rtmp_ring);
//添加metadata
Metadata::addTrack(_metadata,track);
Metadata::addTrack(_metadata, track);
return true;
}
void RtmpMuxer::inputFrame(const Frame::Ptr &frame) {
bool RtmpMuxer::inputFrame(const Frame::Ptr &frame) {
auto &encoder = _encoder[frame->getTrackType()];
if(encoder){
encoder->inputFrame(frame);
}
return encoder ? encoder->inputFrame(frame) : false;
}
void RtmpMuxer::makeConfigPacket(){

View File

@@ -43,13 +43,13 @@ public:
/**
* 添加ready状态的track
*/
void addTrack(const Track::Ptr & track) override;
bool addTrack(const Track::Ptr & track) override;
/**
* 写入帧数据
* @param frame 帧
*/
void inputFrame(const Frame::Ptr &frame) override;
bool inputFrame(const Frame::Ptr &frame) override;
/**
* 重置所有track