修复视频播放速度过快的问题

This commit is contained in:
JIe Jie 2024-02-21 10:45:13 +08:00
parent 5cc0de59d5
commit 5cb403e96b

View File

@ -155,8 +155,8 @@ int main(int argc, char** const argv)
case FileType::VIDEO: case FileType::VIDEO:
{ {
InitVideo(window, targetFilepath, decoderParam, openglVideoParam, shaderService); InitVideo(window, targetFilepath, decoderParam, openglVideoParam, shaderService);
auto& time_base = decoderParam.fmtCtx->streams[decoderParam.videoStreamIndex]->time_base; auto stream_frame_rate = decoderParam.fmtCtx->streams[decoderParam.videoStreamIndex]->avg_frame_rate;
framerate = (double)time_base.num / time_base.den; framerate = static_cast<double>(stream_frame_rate.den) / stream_frame_rate.num;
break; break;
} }
case FileType::IMG: case FileType::IMG:
@ -202,7 +202,7 @@ int main(int argc, char** const argv)
case FileType::VIDEO: case FileType::VIDEO:
OpenglRender(decoderParam, openglVideoParam, shaderService); OpenglRender(decoderParam, openglVideoParam, shaderService);
SDL_GL_SwapWindow(window); SDL_GL_SwapWindow(window);
std::this_thread::sleep_until(current_time + std::chrono::milliseconds((int)(framerate * 1000))); std::this_thread::sleep_until(current_time + std::chrono::milliseconds(static_cast<int>(framerate * 1000)));
current_time = std::chrono::system_clock::now(); current_time = std::chrono::system_clock::now();
break; break;