我正在用C++开发一个屏幕录制工具。
它基本上捕获桌面帧并创建AVI文件。算法如下:
1. 创建线程:
3. 在
问题在于,当每秒钟捕获6帧以上时(这取决于硬件配置),帧和声音之间会出现延迟。
我正在寻求一种优化算法的解决方案。一种解决方案可能是在内存中缓冲帧,而不是即时将所有帧附加到AVI文件中。但这会使代码更复杂,因为我必须处理在不同线程中捕获的声音数据。
你有什么建议可以增加此工具支持的fps值,而不会失去同步?
它基本上捕获桌面帧并创建AVI文件。算法如下:
1. 创建线程:
this->m_hThread=CreateThread(NULL,0,thScreenCapture,this,0,NULL);
2. 每秒钟(例如5fps)在thScreenCapture
中捕获桌面。3. 在
Capture()
函数中,将位图数据附加到AVI文件中:this->appendBitmapToAvi(this->avifile, bmp);
此工具还记录声音。因此,在方法thScreenCapture
中,声音数据也被附加到AVI文件中。问题在于,当每秒钟捕获6帧以上时(这取决于硬件配置),帧和声音之间会出现延迟。
我正在寻求一种优化算法的解决方案。一种解决方案可能是在内存中缓冲帧,而不是即时将所有帧附加到AVI文件中。但这会使代码更复杂,因为我必须处理在不同线程中捕获的声音数据。
你有什么建议可以增加此工具支持的fps值,而不会失去同步?