控制1秒30帧的视频频率

复制代码
#include <chrono>
#include <thread>

void controlFrameRate(std::chrono::milliseconds frameDuration) {
    auto startTime = std::chrono::high_resolution_clock::now();

    // Your drawing/rendering logic here

    auto endTime = std::chrono::high_resolution_clock::now();
    auto elapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime);

    std::this_thread::sleep_for(frameDuration - elapsedTime);
}

int main() {
    const int framesPerSecond = 30;
    const std::chrono::milliseconds frameDuration(1000 / framesPerSecond);

    while (true) {
        controlFrameRate(frameDuration);
    }

    return 0;
}

1秒30帧,1秒等于1000毫秒,所以用1000除以30,得到平均一帧多长时间frameDuration

当处理完一帧图片的时候,得到elapsedTime。如果elapsedTime小于frameDuration,这个时候要让程序暂停一下,即std::this_thread::sleep_for,让进程睡一会,然后再进行下一次的工作;如果elapsedTime大于frameDuration,这样应该达不到1秒30帧的频率

这样就能控制好,是1秒30帧的频率。

全部写在主函数里,是下面的代码逻辑

复制代码
#include <chrono>
#include <thread>

int main() {
    const int framesPerSecond = 30;
    const std::chrono::milliseconds frameDuration(1000 / framesPerSecond);

    while (true) {
        auto startTime = std::chrono::high_resolution_clock::now();

        // Your drawing/rendering logic here

        auto endTime = std::chrono::high_resolution_clock::now();
        auto elapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime);

        std::this_thread::sleep_for(frameDuration - elapsedTime);
    }

    return 0;
}
相关推荐
tryxr19 分钟前
矩阵的几种基础变换
java·数据结构·算法·矩阵
mmmmath_323 分钟前
LeetCode.028.找出字符串中第一个匹配项的
数据结构·算法·leetcode
爱吃提升32 分钟前
文生视频核心
人工智能·音视频
Selvaggia33 分钟前
DMD(Distribution Matching Distillation,分布匹配蒸馏)
算法
2601_9556624644 分钟前
抖音视频怎么做多语言配音?2026年AI配音工具与制作流程详解
人工智能·音视频·语音识别·视频
Navigator_Z1 小时前
LeetCode //C - 1255. Maximum Score Words Formed by Letters
c语言·算法·leetcode
All for pursuit.1 小时前
【栈-4】739.每日温度
数据结构·c++·算法·leetcode
音视频牛哥1 小时前
Android与HarmonyOS NEXT如何接入GB28181:从SIP到PS/RTP的完整链路
音视频·gb28181-2022对接·鸿蒙next gb28181·gb/t 28181-2022·gb/t 28181-2016·gb28181-2022平台
All for pursuit.1 小时前
【栈-5】84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
美狐美颜SDK开放平台1 小时前
直播APP源码与视频美颜sdk如何配合?一套完整开发思路
android·人工智能·计算机视觉·音视频·直播美颜sdk