新增媒体流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

@@ -31,7 +31,7 @@ public:
};
//TS直播源
class TSMediaSource : public MediaSource, public toolkit::RingDelegate<TSPacket::Ptr>, private PacketCache<TSPacket>{
class TSMediaSource final : public MediaSource, public toolkit::RingDelegate<TSPacket::Ptr>, private PacketCache<TSPacket>{
public:
using Ptr = std::shared_ptr<TSMediaSource>;
using RingDataType = std::shared_ptr<toolkit::List<TSPacket::Ptr> >;
@@ -42,7 +42,7 @@ public:
const std::string &stream_id,
int ring_size = TS_GOP_SIZE) : MediaSource(TS_SCHEMA, vhost, app, stream_id), _ring_size(ring_size) {}
~TSMediaSource() override = default;
~TSMediaSource() override { flush(); }
/**
* 获取媒体源的环形缓冲

View File

@@ -16,8 +16,8 @@
namespace mediakit {
class TSMediaSourceMuxer : public MpegMuxer, public MediaSourceEventInterceptor,
public std::enable_shared_from_this<TSMediaSourceMuxer> {
class TSMediaSourceMuxer final : public MpegMuxer, public MediaSourceEventInterceptor,
public std::enable_shared_from_this<TSMediaSourceMuxer> {
public:
using Ptr = std::shared_ptr<TSMediaSourceMuxer>;
@@ -27,7 +27,7 @@ public:
_media_src = std::make_shared<TSMediaSource>(vhost, app, stream_id);
}
~TSMediaSourceMuxer() override = default;
~TSMediaSourceMuxer() override { MpegMuxer::flush(); };
void setListener(const std::weak_ptr<MediaSourceEvent> &listener){
setDelegate(listener);