使用VS2015打开项目,运行就能生出视频。
-
录屏功能支持:开始,暂停,结束。
-
使用Qt+C++封装FFmpeg API,没有使用废弃的FFmpeg API。
-
主线程:Qt GUI线程,以后可接入录屏UI。
-
MuxThreadProc:复用线程,启动音视频采集线程。打开输入/输出流,然后从fifoBuffer读取帧,编码生成各种格式视频。
-
ScreenRecordThreadProc:视频采集线程,从输入流采集帧,缩放后写入fifoBuffer。
-
SoundRecordThreadProc:音频采集线程,从输入流采集样本,重采样后写入fifoBuffer。
注意
- 如果电脑没有麦克风的话,音频会打开失败,导致程序退出。
- 音视频采集的帧数实际上是达不到25帧的(具体1秒能采集多少帧据说看机器配置),所以录制10秒的视频可能只有6秒,也就是机器1秒只能采集15帧,因为在帧率固定的情况下,后面的帧往前补充了,所以你也能感觉到视频加快了。解决这个问题可以考虑插帧法,保证帧数足够。网上搜了一下没有找到相关的算法,以后有机会再看看FFmpeg源码是怎么实现的,不过可能有点难:)