|
@@ -108,9 +108,27 @@ void DecodeVedio::setCurrentPos(quint64 pos)
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
|
|
}
|
|
|
m_isSeek = true;
|
|
|
+
|
|
|
+ if(pos > 9223372036854775807)
|
|
|
+ {
|
|
|
+ pos = 0;
|
|
|
+ }
|
|
|
|
|
|
- int queueNumFPS = m_queueImage.count() * ( 1000.0f / m_fps ) * 1000 ;
|
|
|
+ qint64 queueNumFPS = m_queueImage.count() * ( 1000.0f / m_fps ) * 1000 ;
|
|
|
qint64 target_pos = m_startPos + pos - queueNumFPS;
|
|
|
+ qint64 end_pos = m_startPos + m_duration;
|
|
|
+
|
|
|
+ if(target_pos > end_pos)
|
|
|
+ {
|
|
|
+
|
|
|
+ target_pos = end_pos;
|
|
|
+
|
|
|
+ }
|
|
|
+ if(target_pos < m_startPos)
|
|
|
+ {
|
|
|
+ target_pos = m_startPos;
|
|
|
+
|
|
|
+ }
|
|
|
m_currentPos = target_pos;
|
|
|
SPDLOG_DEBUG("设置播放位置:{}",target_pos);
|
|
|
|
|
@@ -657,5 +675,6 @@ void DecodeVedio::do_startDecodeVedio()
|
|
|
m_pauseDecode = false;
|
|
|
|
|
|
decodeVedio();
|
|
|
- SPDLOG_TRACE("播放完成...");
|
|
|
+ SPDLOG_TRACE("Decode播放完成...");
|
|
|
+
|
|
|
}
|