问题修正:解决loadMP4File崩溃问题时,引入的getOwnerPoller失败 (#4390)
Some checks failed
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled

This commit is contained in:
yingxiaodong 2025-08-11 20:35:10 +08:00 committed by GitHub
parent bbbfce9fe3
commit 8f3c01043f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -667,6 +667,14 @@ void MediaSourceEvent::onReaderChanged(MediaSource &sender, int size){
bool is_mp4_vod = sender.getMediaTuple().app == record_app;
weak_ptr<MediaSource> 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<Timer>(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 {