From 8f3c01043f25994faca5fe2a6bd0ab1da6560e13 Mon Sep 17 00:00:00 2001 From: yingxiaodong Date: Mon, 11 Aug 2025 20:35:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=AD=A3=EF=BC=9A?= =?UTF-8?q?=E8=A7=A3=E5=86=B3loadMP4File=E5=B4=A9=E6=BA=83=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=97=B6=EF=BC=8C=E5=BC=95=E5=85=A5=E7=9A=84getOwnerP?= =?UTF-8?q?oller=E5=A4=B1=E8=B4=A5=20(#4390)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Common/MediaSource.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Common/MediaSource.cpp b/src/Common/MediaSource.cpp index b8ea2e62..8d2a6372 100644 --- a/src/Common/MediaSource.cpp +++ b/src/Common/MediaSource.cpp @@ -667,6 +667,14 @@ void MediaSourceEvent::onReaderChanged(MediaSource &sender, int size){ bool is_mp4_vod = sender.getMediaTuple().app == record_app; weak_ptr weak_sender = sender.shared_from_this(); + EventPoller::Ptr specified_poller; + try { + specified_poller = this->getOwnerPoller(sender); + } + catch (std::exception &ex) { + // 尝试获取 OwnerPoller,没有实现则使用默认 nullptr + // WarnL << ex.what(); + } _async_close_timer = std::make_shared(stream_none_reader_delay / 1000.0f, [weak_sender, is_mp4_vod]() { auto strong_sender = weak_sender.lock(); if (!strong_sender) { @@ -700,7 +708,7 @@ void MediaSourceEvent::onReaderChanged(MediaSource &sender, int size){ strong_sender->close(false); } return false; - }, this->getOwnerPoller(sender)); + }, specified_poller); } string MediaSourceEvent::getOriginUrl(MediaSource &sender) const {