相关疑难解决方法(0)

使用std :: chrono :: high_resolution_clock每秒写一次帧30次

我正在使用OpenCV来编写视频文件.为了cv::VideoWriter正常工作,对write()函数的调用必须每秒发生30次(对于30fps视频).我发现这个代码使用boost库来实现这一点.我想要同样但std::chrono在我的程序中使用.这是我的实施:

std::chrono::high_resolution_clock::time_point prev = std::chrono::high_resolution_clock::now();
std::chrono::high_resolution_clock::time_point current = prev;
long long difference = std::chrono::duration_cast<std::chrono::microseconds>(current-prev).count();

while(recording){

    while (difference < 1000000/30){
        current = std::chrono::high_resolution_clock::now();
        difference = std::chrono::duration_cast<std::chrono::microseconds>(current-prev).count();
    }                   

    theVideoWriter.write(frameToRecord);

    prev = prev + std::chrono::high_resolution_clock::duration(1000000000/30);
    difference = std::chrono::duration_cast<std::chrono::microseconds>(current-prev).count();                  
}

theVideoWriter.release();
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是正确的方法,或者是否有更有效的方法.还有什么比投射持续时间更好的long long difference

c++ c++11 c++-chrono

3
推荐指数
1
解决办法
2008
查看次数

标签 统计

c++ ×1

c++-chrono ×1

c++11 ×1