Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt录像机_C++_Qt_Video_Ffmpeg - Fatal编程技术网

C++ Qt录像机

C++ Qt录像机,c++,qt,video,ffmpeg,C++,Qt,Video,Ffmpeg,我正在尝试用Qt创建一个录像机。到目前为止,我所做的是在屏幕上截取一个矩形并保存它。最后,我使用ffmpeg从图像中获取视频文件 我将计时器的信号timeout()连接到我的自定义插槽,该插槽拍摄快照并将其保存到我的tmp文件夹中。计时器的间隔为1000/30。应该是每秒30次。但是1000/30比33毫秒多一点,所以我不能真正获得30 fps。还有一点 我用录像机录制了一段youtube视频,一切都很顺利,但根据时间间隔的不同,速度会有点快/慢 所以我的问题基本上是我如何得到真正的30/40/

我正在尝试用Qt创建一个录像机。到目前为止,我所做的是在屏幕上截取一个矩形并保存它。最后,我使用ffmpeg从图像中获取视频文件

我将计时器的信号
timeout()
连接到我的自定义插槽,该插槽拍摄快照并将其保存到我的tmp文件夹中。计时器的间隔为1000/30。应该是每秒30次。但是1000/30比33毫秒多一点,所以我不能真正获得30 fps。还有一点

我用录像机录制了一段youtube视频,一切都很顺利,但根据时间间隔的不同,速度会有点快/慢

所以我的问题基本上是我如何得到真正的30/40/50/。。。fps

  • 开始捕获时启动一个

  • 捕获完一帧后(在快照插槽的末尾),将下一帧编号乘以以毫秒为单位的近似帧持续时间(双精度浮点值)(例如,对于30 fps,它是
    ~33.33333333
    ,但不要写入该值-写入
    (double)1000/30
    )。调用此值
    next\u时间戳

  • 拜访你的QEDTimer。调用此值
    current\u timestamp


  • 调用静态函数休眠
    next\u timestamp-current\u timestamp
    。再次将slot参数设置为快照插槽。请注意,如果睡眠时间是使用多个线程(例如一个用于复制,一个用于分析),则可能会获得更好的性能。这也取决于你的处理器。有几件事需要注意。Qt中的第一个屏幕捕获非常缓慢且不稳定。因此,可能很难获得您想要的准确帧速率。我建议您使用可变帧速率,并为每一帧设置时间戳。因此,即使您错过了目标帧速率,视频仍能完美播放。