QtScrcpySpeaks English? Click me for English introduction. QtScrcpy 可以通過 USB / 網絡連接Android設備,并進行顯示和控制。無需root權限。 同時支持 GNU/Linux ,Windows 和 MacOS 三大主流桌面平臺。 它專注于:
作者開發了更加專業的投屏軟件 |
關鍵點 | scrcpy | QtScrcpy |
---|---|---|
界面 | sdl | qt |
視頻解碼 | ffmpeg | ffmpeg |
視頻渲染 | sdl | opengl |
跨平臺基礎設施 | 自己封裝 | Qt |
編程語言 | C | C++ |
編程方式 | 同步 | 異步 |
按鍵映射 | 不支持自定義 | 支持自定義按鍵映射 |
編譯方式 | Meson+Gradle | CMake |
使用Qt可以非常容易的定制自己的界面
基于Qt的信號槽機制的異步編程提高性能
方便新手學習
增加多點觸控支持
如果你對它感興趣,想學習它的實現原理而又感覺無從下手,可以選擇購買我錄制的視頻課程, 里面詳細介紹了整個軟件的開發架構以及開發流程,帶你從無到有的開發 QtScrcpy:
課程介紹:https://blog.csdn.net/rankun1/article/details/87970523
或者你也可以加入我的 QtScrcpy QQ 群,和志同道合的朋友一塊互相交流技術:
QQ群號:901736468
Android 部分至少需要 API 21(Android 5.0)。
您要確保在 Android 設備上啟用adb調試。
Windows 平臺,你可以直接使用我編譯好的可執行程序:
你也可以自己編譯
Mac OS 平臺,你可以直接使用我編譯好的可執行程序:
你也可以自己編譯
對于 Arch Linux 用戶,可以使用 AUR 安裝:yay -Syu qtscrcpy
(可能版本并非最新;維護者:yochananmarqos)
其他發行版的用戶可以直接使用我編譯好的可執行程序:
你也可以從 GitHub Actions 獲取最新的自動編譯好的軟件
當然,你也可以自己編譯(不推薦,需要準備環境)
目前只在 Ubuntu 和 Arch Linux 上測試過編譯過程
在你的電腦上接入Android設備,然后運行程序,點擊 一鍵USB連接
或者 一鍵WIFI連接
將手機和電腦連接到同一局域網
安卓手機端在開發者選項中打開 USB 調試
通過 USB 連接安卓手機到電腦
點擊刷新設備,會看到有設備號更新出來
點擊獲取設備 IP
點擊啟動 adbd
無線連接
再次點擊刷新設備,發現多出了一個 IP 地址開頭的設備,選擇這個設備
啟動服務
備注:啟動 adbd 以后無需繼續連接 USB 線,以后連接斷開都不再需要,除非 adbd 停止運行
啟動配置:啟動服務前的功能參數設置
分別可以設置本地錄制視頻的比特率、分辨率、錄制格式、錄像保存路徑等。
僅后臺錄制:啟動服務不顯示界面,只錄制 Android 設備屏幕
窗口置頂:Android 設備顯示窗口置頂
自動息屏:啟動服務以后,自動關閉 Android 設備屏幕以節省電量
使用 Reverse:服務啟動模式,出現服務啟動失敗報錯 "more than one device" 可以去掉這個勾選嘗試連接
刷新設備列表:刷新當前連接的設備
啟動服務:連接到 Android 設備
停止服務:斷開與 Android 設備的連接
停止所有服務:斷開所有已連接的 Android 設備
獲取設備ip:獲取到 Android 設備的 IP 地址,更新到無線區域中,方便進行無線連接
啟動adbd:啟動 Android 設備的 adbd 服務,無線連接之前,必須要啟動
無線連接:使用無線方式連接 Android 設備
無線斷開:斷開無線方式連接的 Android 設備
命令行:執行自定義 adb 命令(目前不支持阻塞命令,例如shell)
實時顯示 Android 設備屏幕
實時鍵鼠控制Android設備
屏幕錄制
截圖
無線連接
多設備連接與批量操作
全屏顯示
窗口置頂
安裝 apk:拖拽apk到顯示窗口即可安裝
傳輸文件:拖拽文件到顯示窗口即可發送文件到 Android 設備
后臺錄制:只錄制屏幕,不顯示界面
剪貼板同步: 在計算機和設備之間同步剪貼板:
Ctrl + c
將設備剪貼板復制到計算機剪貼板;
Ctrl + Shift + v
將計算機剪貼板復制到設備剪貼板;
Ctrl + v
將計算機剪貼板作為一系列文本事件發送到設備(不支持非ASCII字符)
同步設備揚聲器聲音到電腦(基于sndcpy,僅支持安卓10級以上,目前不推薦使用,可使用藍牙連接替代)
功能 | 快捷鍵(Windows) | 快捷鍵 (macOS) |
---|---|---|
切換全屏 | Ctrl +f | Cmd +f |
調整窗口大小為 1:1 | Ctrl +g | Cmd +g |
調整窗口大小去除黑邊 | Ctrl +w | 左鍵雙擊 | Cmd +w | 左鍵雙擊 |
點擊 主頁 | Ctrl +h | 點擊鼠標中鍵 | Ctrl +h | 點擊鼠標中鍵 |
點擊 BACK | Ctrl +b | 右鍵雙擊 | Cmd +b | 右鍵雙擊 |
點擊 APP_SWITCH | Ctrl +s | Cmd +s |
點擊 MENU | Ctrl +m | Ctrl +m |
點擊 VOLUME_UP | Ctrl +↑ (上) | Cmd +↑ (上) |
點擊 VOLUME_DOWN | Ctrl +↓ (下) | Cmd +↓ (下) |
點擊 POWER | Ctrl +p | Cmd +p |
打開電源 | 右鍵雙擊 | 右鍵雙擊 |
關閉屏幕 (保持投屏) | Ctrl +o | Cmd +o |
打開下拉菜單 | Ctrl +n | Cmd +n |
關閉下拉菜單 | Ctrl +Shift +n | Cmd +Shift +n |
復制到剪切板 | Ctrl +c | Cmd +c |
剪切到剪切板 | Ctrl +x | Cmd +x |
同步剪切板并粘貼 | Ctrl +v | Cmd +v |
注入電腦剪切板文本 | Ctrl +Shift +v | Cmd +Shift +v |
鼠標左鍵雙擊黑色區域可以去除黑色區域
如果電源關閉,鼠標右鍵雙擊打開電源;如果電源開啟,鼠標右鍵雙擊相當于返回
歡迎大家一起維護這個項目,貢獻自己的代碼,不過請遵循以下幾點要求:
PR 請推向 dev 分支,不要推向 master 分支
提交 PR 之前請先變基原項目
PR 請以少量多次的原則提交(即一個功能點提交一個 PR)
代碼風格請保持和原有風格一致
綜合起來有以下幾個原因,比重從大到小排列:
學習Qt的過程中需要一個項目實戰一下
本身具有音視頻相關技能,對音視頻很感興趣
本身具有 Android 開發技能,好久沒用有點生疏,需要鞏固一下
發現了 Scrcpy,決定用新的技術棧(C++ + Qt + Opengl + FFmpeg)進行復刻
盡量提供了所有依賴資源,方便傻瓜式編譯。
使用官方 Qt Installer 或非官方工具(如 aqt)在目標平臺上搭建Qt開發環境。 需要 5.12 以上版本 Qt(在 Windows 上使用 MSVC 2019)
克隆該項目:git clone --recurse-submodules git@github.com:barry-ran/QtScrcpy.git
Windows 使用 QtCreator 打開項目下 CMakeLists.txt 并編譯 Release
Linux 用終端執行 ./ci/linux/build_for_linux.sh "Release"
注:編譯結果位于 output/x64/Release
中
安裝以下包:qt5-base qt5-multimedia qt5-x11extras
(推薦安裝 qtcreator
)
克隆該項目:git clone --recurse-submodules git@github.com:barry-ran/QtScrcpy.git
用終端執行 ./ci/linux/build_for_linux.sh "Release"
注:編譯結果位于 output/x64/Release
中
目標平臺上搭建 Android 開發環境
使用 Android Studio 打開項目根目錄中的 server
第一次打開時,如果你沒有對應版本的 Gradle,Studio 會提示找不到 Gradle,是否升級 Gradle 并創建,選擇取消,取消后會提示選擇 Gradle 的位置,同樣取消即可。Studio 會隨后自動下載。
按需編輯代碼
編譯出 apk 以后改名為 scrcpy-server 并替換 third_party/scrcpy-server
即可
由于是復刻的 Scrcpy,尊重它的 Licence
Copyright (C) 2025 RankunLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
一枚普通的程序員,工作中主要使用 C++ 進行桌面客戶端開發,一畢業在山東做過一年多鋼鐵仿真教育軟件,后來轉戰上海先后從事安防,在線教育相關領域工作,對音視頻比較熟悉,對音視頻領域如語音通話,直播教育,視頻會議等相關解決方案有所了解。同時具有Android,Linux服務器等開發經驗。
|