新增媒体流flush机制:#1996

This commit is contained in:
ziyue
2022-10-16 19:49:56 +08:00
parent 80eef693c6
commit ac1abb34da
44 changed files with 287 additions and 124 deletions

View File

@@ -60,7 +60,7 @@ public:
MediaSource(RTMP_SCHEMA, vhost, app, stream_id), _ring_size(ring_size) {
}
~RtmpMediaSource() override{}
~RtmpMediaSource() override { flush(); }
/**
* 获取媒体源的环形缓冲

View File

@@ -26,9 +26,9 @@
namespace mediakit {
class RtmpMediaSourceImp: public RtmpMediaSource, private TrackListener, public MultiMediaSourceMuxer::Listener {
class RtmpMediaSourceImp final : public RtmpMediaSource, private TrackListener, public MultiMediaSourceMuxer::Listener {
public:
typedef std::shared_ptr<RtmpMediaSourceImp> Ptr;
using Ptr = std::shared_ptr<RtmpMediaSourceImp>;
/**
* 构造函数
@@ -42,7 +42,7 @@ public:
_demuxer->setTrackListener(this);
}
~RtmpMediaSourceImp() = default;
~RtmpMediaSourceImp() override = default;
/**
* 设置metadata

View File

@@ -16,8 +16,8 @@
namespace mediakit {
class RtmpMediaSourceMuxer : public RtmpMuxer, public MediaSourceEventInterceptor,
public std::enable_shared_from_this<RtmpMediaSourceMuxer> {
class RtmpMediaSourceMuxer final : public RtmpMuxer, public MediaSourceEventInterceptor,
public std::enable_shared_from_this<RtmpMediaSourceMuxer> {
public:
typedef std::shared_ptr<RtmpMediaSourceMuxer> Ptr;
@@ -29,7 +29,7 @@ public:
getRtmpRing()->setDelegate(_media_src);
}
~RtmpMediaSourceMuxer() override{}
~RtmpMediaSourceMuxer() override { RtmpMuxer::flush(); }
void setListener(const std::weak_ptr<MediaSourceEvent> &listener){
setDelegate(listener);

View File

@@ -43,6 +43,14 @@ bool RtmpMuxer::inputFrame(const Frame::Ptr &frame) {
return encoder ? encoder->inputFrame(frame) : false;
}
void RtmpMuxer::flush() {
for (auto &encoder : _encoder) {
if (encoder) {
encoder->flush();
}
}
}
void RtmpMuxer::makeConfigPacket(){
for(auto &encoder : _encoder){
if(encoder){

View File

@@ -51,6 +51,11 @@ public:
*/
bool inputFrame(const Frame::Ptr &frame) override;
/**
* 刷新输出所有frame缓存
*/
void flush() override;
/**
* 重置所有track
*/