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

@@ -94,11 +94,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

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

View File

@@ -43,17 +43,17 @@ RtspMuxer::RtspMuxer(const TitleSdp::Ptr &title) {
_ntp_stamp_start = getCurrentMillisecond(true);
}
void RtspMuxer::addTrack(const Track::Ptr &track) {
bool RtspMuxer::addTrack(const Track::Ptr &track) {
//根据track生成sdp
Sdp::Ptr sdp = track->getSdp();
if (!sdp) {
return;
return false;
}
auto &encoder = _encoder[track->getTrackType()];
encoder = Factory::getRtpEncoderBySdp(sdp);
if (!encoder) {
return;
return false;
}
//设置rtp输出环形缓存
@@ -62,6 +62,7 @@ void RtspMuxer::addTrack(const Track::Ptr &track) {
//添加其sdp
_sdp.append(sdp->getSdp());
trySyncTrack();
return true;
}
void RtspMuxer::trySyncTrack() {
@@ -71,11 +72,9 @@ void RtspMuxer::trySyncTrack() {
}
}
void RtspMuxer::inputFrame(const Frame::Ptr &frame) {
bool RtspMuxer::inputFrame(const Frame::Ptr &frame) {
auto &encoder = _encoder[frame->getTrackType()];
if (encoder) {
encoder->inputFrame(frame);
}
return encoder ? encoder->inputFrame(frame) : false;
}
string RtspMuxer::getSdp() {

View File

@@ -63,13 +63,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