mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-25 12:11:36 +08:00
防止对象析构时抛异常导致的崩溃
This commit is contained in:
parent
8815776b81
commit
b4fecdc929
@ -41,7 +41,13 @@ public:
|
|||||||
FMP4MediaSource(const MediaTuple& tuple,
|
FMP4MediaSource(const MediaTuple& tuple,
|
||||||
int ring_size = FMP4_GOP_SIZE) : MediaSource(FMP4_SCHEMA, tuple), _ring_size(ring_size) {}
|
int ring_size = FMP4_GOP_SIZE) : MediaSource(FMP4_SCHEMA, tuple), _ring_size(ring_size) {}
|
||||||
|
|
||||||
~FMP4MediaSource() override { flush(); }
|
~FMP4MediaSource() override {
|
||||||
|
try {
|
||||||
|
flush();
|
||||||
|
} catch (std::exception &ex) {
|
||||||
|
WarnL << ex.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取媒体源的环形缓冲
|
* 获取媒体源的环形缓冲
|
||||||
|
@ -26,7 +26,13 @@ public:
|
|||||||
_media_src = std::make_shared<FMP4MediaSource>(tuple);
|
_media_src = std::make_shared<FMP4MediaSource>(tuple);
|
||||||
}
|
}
|
||||||
|
|
||||||
~FMP4MediaSourceMuxer() override { MP4MuxerMemory::flush(); };
|
~FMP4MediaSourceMuxer() override {
|
||||||
|
try {
|
||||||
|
MP4MuxerMemory::flush();
|
||||||
|
} catch (std::exception &ex) {
|
||||||
|
WarnL << ex.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void setListener(const std::weak_ptr<MediaSourceEvent> &listener){
|
void setListener(const std::weak_ptr<MediaSourceEvent> &listener){
|
||||||
setDelegate(listener);
|
setDelegate(listener);
|
||||||
|
@ -84,7 +84,13 @@ public:
|
|||||||
using Ptr = std::shared_ptr<HlsRecorder>;
|
using Ptr = std::shared_ptr<HlsRecorder>;
|
||||||
template <typename ...ARGS>
|
template <typename ...ARGS>
|
||||||
HlsRecorder(ARGS && ...args) : HlsRecorderBase<MpegMuxer>(false, std::forward<ARGS>(args)...) {}
|
HlsRecorder(ARGS && ...args) : HlsRecorderBase<MpegMuxer>(false, std::forward<ARGS>(args)...) {}
|
||||||
~HlsRecorder() override { this->flush(); }
|
~HlsRecorder() override {
|
||||||
|
try {
|
||||||
|
this->flush();
|
||||||
|
} catch (std::exception &ex) {
|
||||||
|
WarnL << ex.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void onWrite(std::shared_ptr<toolkit::Buffer> buffer, uint64_t timestamp, bool key_pos) override {
|
void onWrite(std::shared_ptr<toolkit::Buffer> buffer, uint64_t timestamp, bool key_pos) override {
|
||||||
@ -102,7 +108,13 @@ public:
|
|||||||
using Ptr = std::shared_ptr<HlsFMP4Recorder>;
|
using Ptr = std::shared_ptr<HlsFMP4Recorder>;
|
||||||
template <typename ...ARGS>
|
template <typename ...ARGS>
|
||||||
HlsFMP4Recorder(ARGS && ...args) : HlsRecorderBase<MP4MuxerMemory>(true, std::forward<ARGS>(args)...) {}
|
HlsFMP4Recorder(ARGS && ...args) : HlsRecorderBase<MP4MuxerMemory>(true, std::forward<ARGS>(args)...) {}
|
||||||
~HlsFMP4Recorder() override { this->flush(); }
|
~HlsFMP4Recorder() override {
|
||||||
|
try {
|
||||||
|
this->flush();
|
||||||
|
} catch (std::exception &ex) {
|
||||||
|
WarnL << ex.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void addTrackCompleted() override {
|
void addTrackCompleted() override {
|
||||||
HlsRecorderBase<MP4MuxerMemory>::addTrackCompleted();
|
HlsRecorderBase<MP4MuxerMemory>::addTrackCompleted();
|
||||||
|
@ -48,7 +48,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
RtmpMediaSource(const MediaTuple& tuple, int ring_size = RTMP_GOP_SIZE): MediaSource(RTMP_SCHEMA, tuple), _ring_size(ring_size) {}
|
RtmpMediaSource(const MediaTuple& tuple, int ring_size = RTMP_GOP_SIZE): MediaSource(RTMP_SCHEMA, tuple), _ring_size(ring_size) {}
|
||||||
|
|
||||||
~RtmpMediaSource() override { flush(); }
|
~RtmpMediaSource() override {
|
||||||
|
try {
|
||||||
|
flush();
|
||||||
|
} catch (std::exception &ex) {
|
||||||
|
WarnL << ex.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取媒体源的环形缓冲
|
* 获取媒体源的环形缓冲
|
||||||
|
@ -44,7 +44,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
RtspMediaSource(const MediaTuple& tuple, int ring_size = RTP_GOP_SIZE): MediaSource(RTSP_SCHEMA, tuple), _ring_size(ring_size) {}
|
RtspMediaSource(const MediaTuple& tuple, int ring_size = RTP_GOP_SIZE): MediaSource(RTSP_SCHEMA, tuple), _ring_size(ring_size) {}
|
||||||
|
|
||||||
~RtspMediaSource() override { flush(); }
|
~RtspMediaSource() override {
|
||||||
|
try {
|
||||||
|
flush();
|
||||||
|
} catch (std::exception &ex) {
|
||||||
|
WarnL << ex.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取媒体源的环形缓冲
|
* 获取媒体源的环形缓冲
|
||||||
|
@ -29,7 +29,13 @@ public:
|
|||||||
getRtpRing()->setDelegate(_media_src);
|
getRtpRing()->setDelegate(_media_src);
|
||||||
}
|
}
|
||||||
|
|
||||||
~RtspMediaSourceMuxer() override { RtspMuxer::flush(); }
|
~RtspMediaSourceMuxer() override {
|
||||||
|
try {
|
||||||
|
RtspMuxer::flush();
|
||||||
|
} catch (std::exception &ex) {
|
||||||
|
WarnL << ex.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void setListener(const std::weak_ptr<MediaSourceEvent> &listener){
|
void setListener(const std::weak_ptr<MediaSourceEvent> &listener){
|
||||||
setDelegate(listener);
|
setDelegate(listener);
|
||||||
|
@ -40,7 +40,13 @@ public:
|
|||||||
|
|
||||||
TSMediaSource(const MediaTuple& tuple, int ring_size = TS_GOP_SIZE): MediaSource(TS_SCHEMA, tuple), _ring_size(ring_size) {}
|
TSMediaSource(const MediaTuple& tuple, int ring_size = TS_GOP_SIZE): MediaSource(TS_SCHEMA, tuple), _ring_size(ring_size) {}
|
||||||
|
|
||||||
~TSMediaSource() override { flush(); }
|
~TSMediaSource() override {
|
||||||
|
try {
|
||||||
|
flush();
|
||||||
|
} catch (std::exception &ex) {
|
||||||
|
WarnL << ex.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取媒体源的环形缓冲
|
* 获取媒体源的环形缓冲
|
||||||
|
Loading…
Reference in New Issue
Block a user