Spacedesk在移動設備上擴展顯示卡頓的優化方案的優化方案



Spacedesk是什么

不知道各位有沒有這樣的經歷,假期回家或者出差時想工作,卻只帶了小屏幕筆記本和平板或者手機,這樣工作起來遠遠沒有工位或者宿舍架設的大顯示屏來的有效率,那該怎么辦呢?Spacedesk,這款軟件可以通過局域網連接安卓/iOS設備/另一台Windows或其它系統電腦,作為PC的副屏幕。
屏幕可以用從設備上的鼠標/觸摸屏/觸控筆控制。
不僅可以投屏,還可兩屏合一,甚至多屏合一(Videowall)使用。
音頻可以路由至從設備。
以及免費!!!

Spacedesk工作在主機-從機模式,從機可以連接至主機提供的局域網屏幕擴展服務變成擴展顯示器。截至目前,主機服務只能運行在Windows7及以上系統,從機軟件可運行在iOS、Android,或者使用Spacedesk Viewer運行在另一台安裝Windows系統的電腦上。也可以使用Spacedesk HTML5 VIEWER運行在任何支持HTML5的瀏覽器上。
Spacedesk在從機上支持觸摸、鍵盤、筆作為輸入設備,安卓設備還支持將電腦音頻轉移至本機播放。轉移后的音頻如何使用就完全按安卓的一套來了,例如沒有藍牙的電腦可以將音頻轉移到手機上,然后手機連接藍牙耳機,and VOILÀ,無線藍牙音頻。當然延遲怎么樣就不好說了。

當然也可以利用屏幕復制選項實現在局域網內的共享屏幕和控制、音頻路由,適用於例如在沒有投影儀的情況下講解等情形。

甚至,對於有多台吃灰設備的垃圾佬來說,可以使用Spacedesk提供的Videowall Engine,實現拼合多個設備,組成更大顯示器的功能。組成Videowall的各個設備都可以獨立調整在拼合顯示屏內的位置、分辨率和自身的旋轉角度,來組成你自己的超級大屏(延遲另說,至少打游戲別想了,看個電影應該還是不錯的)。Videowall功能可以在主機端的Spacedesk Driver Console窗口左側的CONTROL選項卡下進行開關。

image

一般而言,使用Spacedesk的目的主要還是將平板等設備用作顯示器擴展,例如作為副屏顯示相對靜態的文檔、網頁,或者播放視頻。應用於具備很強交互特性的環境中時,由於Spacedesk的圖像傳輸帶來的延遲,與網絡環境和帶寬、不合理的分辨率、編碼方式、圖像質量設置造成的卡頓,會給使用帶來較大的困擾。

兼容性

Spacedesk對驅動程序的兼容性有一定要求,存在不兼容的驅動時會提醒進行卸載,例如相近功能的TwomonUSB,否則不會啟動。另外主機端注意:

N卡需要更新驅動,保證驅動在461.09以上版本,否則可致系統藍屏

使用

將安裝好Spacedesk並且運行了應用的電腦和平板/手機設備連接到同一局域網下,在從機端界面選擇要連接的主機IP,不分設備,只要能夠正常安裝上應用即可。華為平板沒有谷歌全家桶,同樣能夠正常使用。

  • 但是有一點需要注意:

目前來說,Spacedesk主機端服務只要在運行,任何連接到同一局域網的從機設備都可以進行連接而不需要任何許可!是的,主機上只能查看有哪些從機設備連接並手動刪除,但是連接時連確認按鈕都不會彈一個!即便主機端已經鎖定也可以連接,並且輸入控制的選項在從機側進行控制,主機端無法控制,也就是說從機側除了主屏幕無法操作、無法傳輸文件外,完全可以獲得控制大半個電腦的控制權,幾乎等同於微軟的遠程桌面。當然,從機側也可以設置自己的屏幕為主屏,並且獲得音頻傳輸...
論壇頁回復,今后會添加密碼設置功能 ("Nevertheless there will be a password option within the next few months."[2021.09.13]),這是鏈接

從設備應用設置

如果只用到擴展屏幕的功能,主機軟件幾乎沒有需要設置的地方。因此只討論從設備設置:

  • 從設備分辨率
    建議設定在合理范圍,畢竟作為電腦副屏,在10寸左右的屏幕上按原生2K左右的分辨率看文字還是挺難受的。推薦1600x900,不要覺得沒用上原生分辨率很可惜,畢竟放着也是吃灰(逃)。總之根據視覺效果和網絡連接條件調整。

  • 刷新率
    當然是越高越好啦,60FPS。

  • 位深
    建議直接24bit(RGB888),不然圖像色彩過渡會有明顯條帶。

  • 編碼方式&圖像質量
    根據視覺效果和網絡連接條件調整。比較合理的起始值大概是:

Encoding Color Depth:Low color quality, fast speed (YUV 4.2.0)
Image Quality: 大概拉到70%的樣子

目前Spacedesk使用的是JPEG編碼,需要在CPU上完成,在副屏分辨率1600x900的情況下播放全屏視頻,Spacedesk在i5-8300H上典型占用12%左右,CPU占用率和網絡傳輸速率隨着擴展屏的數量、分辨率、圖像質量、顯示內容非靜態部分的尺寸增加而增加。未來可能會支持H.264,使用GPU進行編碼工作。

如何通過USB設備連接以降低延遲和減少卡頓?

顯然一般的平板設備是沒有網口的,可選的接入方式幾乎也就只有WiFi一種。Spacedesk只提供了通過局域網進行屏幕擴展的功能,並沒有自帶USB擴展的功能。當然,多種軟件對比下,首先Spacedesk進行屏幕擴展免費並且不限數量,其次通過網絡的方式有很高的靈活性,接入多台設備也很方便,不會有線纜/接口數量方面的困擾,在實現USB連接的情況下(下面探討),可以使用混合有線/無線連接的方式,有針對性地對擴展屏幕進行優化。TwomonUSB和Wired XDisplay都需要付費(官網見文末),並且驅動程序和Spacedesk不兼容,因此沒有直接選用專門通過USB擴展屏幕的方案。

那么問題來了,Spacedesk在WiFi環境下存在明顯的延遲,圖像質量也受網絡環境影響,即便在5G頻段的WiFi下調低分辨率和圖像質量,偶爾的卡頓也是存在的,比較影響使用體驗。當然,完全顯示靜態頁面是無所謂的。為了能夠流暢播放視頻、稍微降低延遲,由於Spacedesk只能通過局域網走,那么我們能不能換一種思路,將移動設備用USB線和主機連接起來,並使用某種方式讓網絡流量在USB上傳輸呢?當然是可以的,不然USB網卡還賣什么呢。

  • 對於安卓設備,我們可以按照 這個解決辦法 ,使用安卓設備提供的RNDIS功能,將安卓設備通過USB接口,虛擬成一個網卡並接入到我們的主機中。在主機中依次點擊網絡和Internet設置-更改適配器選項,在打開的界面中我們能看到多了一個Remote NDIS based Internet Sharing Device的設備,這便是安卓設備虛擬出的網卡。如果安卓設備中找不到RNDIS,那么有可能某些廠家將其命名為USB網絡共享的選項,否則嘗試這個鏈接啟用此功能。在Win10中,RNDIS驅動會在設備連接時自動安裝。
    image

  • 對於iOS設備,可以通過 這個解決辦法 ,實現類似安卓下RNDIS的方案。

至此,我們已經完成了從設備和主機之間通過USB實現網絡連接的全過程。如果從設備,也就是用來作為擴展屏的Android/iOS設備,同時連接了主機所連接的網絡,也就是說,除了USB實現的網絡連接之外,主機還通過WiFi、有線網絡連接等方式處在另一個局域網中,那么在從設備上搜索時會存在兩個甚至多個不同IP地址但相同名稱的server,也就是主機。為了區分主機通過WiFi、有線網絡連接和USB實現的擴展服務,需要重復之前提到的:

  • 點擊網絡和Internet設置-更改適配器選項-雙擊[從設備通過USB實現的網絡適配器]-詳細信息-找到[IPv4地址]

不清楚IP地址是什么?沒關系,接下來為了確保我們的擴展屏數據通過我們指定的方式傳輸,在從設備上選擇和上一步得到的IP地址相同的IP地址進行連接即可。例如,從設備通過WiFi連接至主機連接的網絡,同時通過USB網絡共享連接至主機,打開從設備上的Spacedesk軟件,搜索出兩個名為

  • DESKTOP-ABCDEFG(Windows10) Connection:192.168.1.10
  • DESKTOP-ABCDEFG(Windows10) Connection:192.168.52.50

的擴展服務,而在主機上找到的、由從設備所提供網絡分配的IP為

  • 192.168.52.50

就是它沒跑了對吧?在從設備上點擊這一項進行連接,即可通過USB實現較低延遲、無卡頓的擴展屏服務。


The End?

當然不是。寫到現在不過是對 這個解決辦法 的簡單重復。使用這種方法能夠實現無卡頓、低延遲的擴展屏功能,但是,如果從設備也連接了具備網絡連接能力的WiFi或者具備數據連接,我們的電腦可能會通過從設備提供的網絡適配器進行聯網,那么相當於網絡連接中多了一層中轉,例如你在玩游戲/看B站,可能會面臨USB(特別是USB2.0並且擴展屏圖像質量設置較高的情況下)同時傳輸顯示數據和一般網絡數據造成的卡頓,以及中轉帶來的額外的延遲。另外:

Windows會默認我們的從設備虛擬出的網卡為普通連接,並不會進行流量限制,而且Windows的網絡切換在后台靜默運行,不主動查看的話用戶是無法感知的。如果你不希望在收藏小姐姐的時候手機流量費用爆炸...

理想情況下,應該是Spacedesk的流量通過從設備提供的網絡適配器進行傳輸,其余流量保持正常方式,即通過電腦本身連接的WiFi/有線網絡進行傳輸。

  • 最簡單的辦法就是關閉從設備的WiFi/流量連接,當Windows檢測到通過從設備提供的網絡無法訪問互聯網時,會自動退回到有網絡的連接。

That's it?
Nope.

如果從設備例如手機也需要WiFi連接,或者必須保持數據連接呢?
Good question.
在Win10中,我們不能單獨地修改網卡的優先級,因為這項功能被砍掉了。但是可以通過修改網絡適配器的躍點數,間接實現優先級的功能。

躍點數

躍點數(Hop count / Interface metric)代表了一包數據從源出發,需要經過多少個中間節點才能到達目的地。一般而言,經過越多的中間節點意味着更高的時延和出錯率,有選擇的情況下,我們當然希望通過更優的網絡進行連接——Windows也是這么想的。Windows默認每個網卡的躍點數自動管理,也可以取消自動管理,並手動給單個網卡分配躍點數。

接口躍點數值越低,代表網卡或網絡優先級越高;反之數值越大,優先級越低。

具體設置步驟參考:如何配置網絡優先順序,調整 Windows 10 網卡優先級以及配置網絡接口順序
為了一勞永逸,可以直接將躍點數設置為1000,確保正常應用都不會通過從設備進行網絡連接,只有Spacedesk通過指定IP進行傳輸的數據會被迫經過從設備提供的網絡適配器。另外,躍點數似乎是根據網絡適配器的GUID進行綁定的,即便斷開USB線后重新連接並開啟RNDIS或iOS設備同等功能,躍點數也不會恢復自動管理的選項,而是保持我們的手動設定值,免去了重新連接需要再次配置的麻煩

至此,就可以愉快地使用Spacedesk over USB的功能了,同時保留了從設備通過USB向主機提供網絡的能力,例如在高鐵上,或者WiFi斷開使主機處於沒有網絡連接的情況下,Windows會自動將網絡切換到具備網絡連接的網絡適配器上——即便我們設定的躍點數是1000。

The End.


期間嘗試了多種方法,最終目的是要實現應用程序的數據分流,使非Spacedesk流量從正常途徑走,僅Spacedesk流量經過從機提供的網絡適配器傳輸,主要包括:

但是以上方法要么使用付費軟件(付費是不可能付費的),要么操作相對復雜(只能綁定某一個應用走特定網卡,而不能確保其他應用不走特定網卡),要么僅適用於安卓設備且需要打開USB調試(全家桶手機應用后台安裝警告),並且會使安卓設備暫時失去向主機提供數據接入的能力。既然Spacedesk目前僅在Windows系統上提供主機端,那么如果能夠實現針對Windows系統的簡潔、優雅、易於實現的解決方案是墜好的,因此也有了這篇Guide。即便以后推出了其他主機端,應該也可以通過相近的手段解決吧。

另外,關於文章命名為[Spacedesk在移動設備上擴展顯示卡頓的優化方案的優化方案],主要參考了[基於spacedesk的擴展屏的優化 - CSDN 魔都五fa肉]的文章,既然有起名困難症那就直接套娃使用吧。

擴展閱讀

文中鏈接:

相似應用:



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM