輸入 ID 到第一個影格
量法:viewer 送出 ID 起算,到解碼器收到第一個影格為止。
量法:viewer 送出 ID 起算,到解碼器收到第一個影格為止。
量法:遠端回報的滑鼠座標逐點對照指定值,三點完全相同。
量法:全鏈路 22 項、反向操作 12 項、回歸 31 項,合計 65 項。
核對方式:ID 中繼是你自己執行的單檔程式;同網段則完全不經伺服器。
Your relay, your boundary
遠端桌面的信任邊界不該落在別人的帳號系統裡。Skywave 把中繼做成你能放進既有網路的一支執行檔。
放在內網時,畫面不離開自家網路;跨網路時,兩端也只連到你指定的中繼。
它只搬運位元組,不解析影像、輸入或檔案;密碼由被控端自己驗證。
裝置靠固定九位數 ID 找到彼此,連線密碼留在被控端。
不必 Docker、不必資料庫;一個組織跑一台中繼就夠。
# 全公司一台就夠 skywave-relay.exe --urls http://0.0.0.0:8080 # 被控端指過去,之後就能用 ID 找到它 skywave-agent.exe --password 你的密碼 --relay ws://中繼位址:8080
Use cases
同一套連線機制,放進不同網路邊界裡,解的是四種不同的工作。
01—04
請對方提供九位數 ID 與密碼,連上後直接操作,不必先問 IP 或改路由器。
把中繼放在兩端都能連到的位置,用固定 ID 找回辦公室裡的主機。
Windows 與 macOS 能互相控制;Android、iPhone 與 iPad 可當主控端。
同網段探索後直接連線,整段不經伺服器,畫面也不會離開你的網路。
Three routes
三種連法沒有先後順序。差別只在你的兩台裝置位於哪一種網路裡。
兩端週期性廣播自己的存在。開啟 app 就看得到清單,點一下直接連;整段不經任何伺服器。
兩端各自向中繼開一條對外連線,所以不必開防火牆入站埠。中繼只搬位元組,不解析影像、輸入或檔案內容。
用瀏覽器開 https://主機:7900 即可,不必裝任何東西。VPN 或內網環境最省事。
Platform matrix
電腦兩邊都能當主控端與被控端。手機和平板目前是主控端;標記同時用文字、框線與線型表達狀態。
DXGI 桌面複製 + Media Foundation 硬體編碼。服務模式可以處理鎖定畫面與使用者切換。
ScreenCaptureKit + VideoToolbox。畫面與系統聲音走同一條擷取串流,不必裝虛擬音效裝置。
原生殼自動列出同網段的電腦,觸控手勢對應滑鼠。被控端的畫面分享開發中。
iPad 橫放是完整工作畫面。被控端做不到——iOS 不開放注入觸控事件,這是系統限制,不是取捨。
License / dependency
不含任何 GPL 元件。
Windows 預設用作業系統內建的 Media Foundation,macOS 用 VideoToolbox;兩邊都在行程內完成硬體編碼,不必把 x264 或 GPL 版 ffmpeg 包進產品。
H.264 的專利授權走 Via LA。這一段獨立列出,因為能不能執行與能不能合法出貨,是兩個不同問題。
Specification
| 項目 | 內容 |
|---|---|
| 影像編碼 | H.264 硬體編碼 — Windows 走 Media Foundation,macOS 走 VideoToolbox,都在行程內完成,不呼叫外部執行檔 |
| 畫面擷取 | DXGI Desktop Duplication / ScreenCaptureKit |
| 解碼 | WebCodecs VideoDecoder,硬體優先、失敗自動退回軟體 |
| 聲音 | 48 kHz 立體聲 16-bit PCM,與畫面共用同一條連線 |
| 輸入 | SendInput / CGEvent。斷線時自動放開按著的修飾鍵 |
| 傳輸 | 單一 WebSocket 承載影像、輸入、檔案、聲音 |
| 檔案傳輸 | 雙向,瀏覽遠端目錄後直接拉 |
| 多螢幕 | 列舉並即時切換,座標依實體顯示器編號對應 |
| 加密 | TLS。同網段用自簽憑證,原生 app 只對你指定的那台放行 |
| 授權 | H.264 專利走 Via LA。不含任何 GPL 元件,可用於商業產品 |
Measured, not estimated
全部來自自動化測試,不是估算。工程事實帶是摘要,這裡保留完整測項與量法。
| 測項 | 結果 | 怎麼量的 |
|---|---|---|
| Windows → Mac 全鏈路 | 22 / 22 | 連線、關鍵影格、解碼、多螢幕、檔案、斷線 |
| 滑鼠座標準確度 | 0 px | 三個目標點,遠端回報座標與指定值完全相同 |
| ID 連線建立時間 | 156–169 ms | viewer 送出 ID 到收到第一個影格 |
| 聲音串流 | 30 / 30 | 左 440 Hz、右 660 Hz,串音抑制約 4000 倍 |
| 聲音位元率 | 1535 kbps | 覆蓋率 100%,無斷點 |
| Mac → Windows | 12 / 12 | Mac 當主控端,含鍵盤滑鼠操作 |
| 回歸測試 | 31 / 31 | 單一指令跑完,自動起停被測程式 |
Download
目前是 v0.1 開發版。Windows 與 macOS 是被控端加主控端,Android 是主控端。
安裝檔會裝進 Program Files 並自動加上防火牆規則——少了那一條,第一次啟動會跳出 Windows 的允許存取對話框,按到「取消」之後就再也連不進來,而且完全沒有線索。 兩個安裝檔目前都尚未經過程式碼簽章,Windows 會顯示發行者不明的警告, macOS 則要在「隱私權與安全性」按一次「仍要開啟」。
下載頁由你自己的中繼伺服器提供。這份網頁如果不是從中繼開啟的,上面的連結不會有東西——
改從 http://你的中繼位址:8080/ 開啟,或直接從原始碼建置。
Build it yourself
# Windows 被控端 dotnet publish agent-win -c Release -r win-x64 --self-contained # macOS 被控端(從 Windows 一鍵推過去建置並安裝) tests\deploy-mac.ps1 # Android 主控端 tests\android-build.ps1 # 跑完整回歸 tests\run-all.ps1
Current state
與其寫一份好看的功能列表,不如把真實進度攤開。
FAQ
目前頁面提供的是 v0.1 開發版下載,專案資料沒有公布定價。這裡不替尚未決定的方案編一個答案。
中繼的實作只搬位元組,不解析影像、輸入或檔案,密碼也由被控端驗證。不過端對端加密仍列在待辦,因此目前不能把「不解析」說成密碼學上的保證。
iOS 不開放第三方 app 注入觸控事件,所以可以把 iPhone 或 iPad 當主控端,卻不能做出完整的被控端。這是系統限制,不是產品取捨。
Skywave 把中繼交給你自己部署,沒有帳號系統;同網段還能完全不經伺服器。頁面上的效能數字也都附上量法,而不是用客戶數或評測星等代替。
可以。出貨預設路徑使用 Media Foundation 與 VideoToolbox,不含 GPL 元件;H.264 的專利授權則走 Via LA。
不用。同網段可以靠探索直接連線;知道 IP 時也能開 https://主機:7900。跨網路用九位數 ID 時才需要你自己的中繼。