diff --git a/server/FFmpegSource.cpp b/server/FFmpegSource.cpp index 2ea621a8..e76df0ed 100644 --- a/server/FFmpegSource.cpp +++ b/server/FFmpegSource.cpp @@ -192,7 +192,11 @@ void FFmpegSource::startTimer(int timeout_ms) { //同步查找流 if (!src) { //流不在线,重新拉流 - strongSelf->play(strongSelf->_src_url, strongSelf->_dst_url, timeout_ms, [](const SockException &) {}); + if(strongSelf->_replay_ticker.elapsedTime() > 10 * 1000){ + //上次重试时间超过10秒,那么再重试FFmpeg拉流 + strongSelf->_replay_ticker.resetTime(); + strongSelf->play(strongSelf->_src_url, strongSelf->_dst_url, timeout_ms, [](const SockException &) {}); + } } }); } else { diff --git a/server/FFmpegSource.h b/server/FFmpegSource.h index f71091da..a11144d7 100644 --- a/server/FFmpegSource.h +++ b/server/FFmpegSource.h @@ -70,6 +70,7 @@ private: string _dst_url; function _onClose; std::weak_ptr _listener; + Ticker _replay_ticker; };