QtScrcpy移动端录屏:Android MediaProjection API集成
一、录屏功能核心实现
QtScrcpy通过Android MediaProjection API实现屏幕录制功能,无需root权限即可捕获设备屏幕内容。在QtScrcpy/ui/dialog.cpp中,通过DeviceParams结构体配置录屏参数:
qsc::DeviceParams params;
params.recordFile = ui->recordScreenCheck->isChecked(); // 启用录屏
params.recordPath = ui->recordPathEdt->text().trimmed(); // 录屏保存路径
params.recordFileFormat = ui->formatBox->currentText().trimmed(); // 视频格式(mp4/mkv)
二、录屏参数配置界面
用户可在主界面配置录屏参数,包括视频分辨率、比特率、方向锁定等。关键配置项对应代码实现如下:
// 视频分辨率设置
quint16 videoSize = ui->maxSizeBox->currentText().trimmed().toUShort();
params.maxSize = videoSize;
// 方向锁定设置
if (ui->lockOrientationBox->currentIndex() > 0) {
params.captureOrientationLock = 1;
params.captureOrientation = (ui->lockOrientationBox->currentIndex() - 1) * 90;
}
三、录屏流程与状态控制
录屏功能与设备连接状态深度绑定,在QtScrcpy/ui/dialog.cpp中通过设备管理接口实现:
// 开始录屏(伴随设备连接)
qsc::IDeviceManage::getInstance().connectDevice(params);
// 停止录屏(伴随设备断开)
qsc::IDeviceManage::getInstance().disconnectDevice(serial);
四、高级录屏功能
4.1 后台录屏模式
支持无界面后台录制,通过设置display = !ui->notDisplayCheck->isChecked()实现:
params.display = !ui->notDisplayCheck->isChecked(); // false表示后台录制
需先在配置界面勾选"后台录制"选项
4.2 帧率控制
Android 10+设备支持帧率限制,通过maxFps参数配置:
// 限制最大帧率(Config::getInstance().getMaxFps()读取配置值)
params.maxFps = static_cast<quint32>(Config::getInstance().getMaxFps());
五、常见问题解决
5.1 录屏无权限
首次使用需在Android设备上授权屏幕捕获权限,对应设置路径:
设置 > 应用 > QtScrcpy > 权限 > 屏幕录制
USB调试权限设置.jpg)
5.2 录屏文件损坏
确保设置正确的视频格式和路径权限,日志输出可通过QtScrcpy/ui/dialog.cpp中的outLog函数查看:
void Dialog::outLog(const QString &log, bool newLine) {
ui->outEdit->append(backLog); // 输出到界面日志框
}
六、扩展阅读
- 官方文档:README.md
- 快捷键指南:docs/KeyMapDes.md
- 配置文件说明:config/config.ini
通过以上实现,QtScrcpy提供了专业级的Android录屏解决方案,兼顾易用性与高级功能扩展性。建议配合群控功能使用,实现多设备同步录制。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



