為了在鞏固下這學期淺學的《計算機網絡》,加上我家寬帶有公網IP,所以就試一下公網Moonlight在廣域網串流PC打遊戲的體驗啦。
大家可以先看一年前局域網,無公網IP虛擬局域網串流1.0的教程文章,再來看這篇文章效果更佳哦!
Moonlight官網:
Moonlight Game Streaming: Play Your PC Games Remotely (moonlight-stream.org)
前提條件
1.準備具有公網IPV4 IP,IPV6比較複雜暫時還沒有嘗試。
2.安裝客戶端軟件:Moonlight
3.寬帶上行帶寬最低5M起步,換算成大家熟悉的MB/S的話就是:0.625MB/s或者是640KB/s。(此條件為滿足moonlight串流720p,30fps畫面推薦的最低碼率帶寬要求)
注意:大寫的B為byte 字節,小寫的b為bit 比特,1byte字節=8bit比特。
4.N卡用戶
5.由路由器橋接進行撥號,而非光纖盒子,如果你是直接使用光纖盒子的WIFI,建議還是先用路由器橋接再操作。
路由器橋接撥號可以在b站搜索教程,或者嫌麻煩,一個電話打給運營商叫他們上門幫你搞就可以啦。
環境搭建
1.PC端(提供遊戲支持的設備)
這裡先推薦使用moonlight官方推薦的自動配置方法,親測十分好用!
官方設置指南:設置指南 ·月光流/月光文檔維基 ·GitHub
網址:Setup Guide · moonlight-stream/moonlight-docs Wiki · GitHub
官方設置指南機器中翻
點擊官方中的超鏈接:
月光互聯網託管工具
Moonlight Internet Hosting Tool下載運行,當出現此彈窗時,說明PC配置完畢。
我們可以發現,在windows的防火牆入站規則裡面已經自動添加了對應服務的端口號。
!!!如果自動配置失敗,可採用手動配置的方法:
官方設置指南機器中翻
首先固定IP地址,打開路由器後臺配置靜態DHCP:
查看PC的局域網IP地址,可以通過路由器的終端設置頁面查看,或者在桌面右鍵個性化,找到網絡和internet查看目前鏈接屬性即可。
或者使用快捷鍵Windows+R,輸入CMD回車,之後輸入ipconfig即可查看:
IPv4地址,一般為192開頭
最後只需在路由器中將該IP地址設為靜態DHCP分配即可。
之後在路由器中高級設置找到:端口轉發/端口映射/NAT等等之類的稱呼,之後添加全部相應的TCP/UDP端口規則:
同時在防火牆windows defender中添加對應的入站規則即可,此時同樣建議第一次先在局域網中和PC建立連接以後,再在廣域網環境下打開Moonlight軟件進行連接串流。
由於我自動配置已經成功啦,所以這個就不好測試了,最開始我在第一次配置的時候就採用的手動配置,然後在Moonlight中添加電腦用(公網IP地址:端口號)去連接也不行,不知為何,用自動配置之後就可以使用啦,手動配置還需大家去嘗試一下喲。
2.移動端(串流設備)
下載安裝Moonlight軟件即可。
IOS平臺:直接國區apple store搜索下載即可,無需切換區域賬號。
安卓平臺:首先看看自己的應用商店有沒有,有的話可以直接下載,沒有的話,進入moonlight官網,找到如下圖箭頭所示,點擊進入網頁下拉找到下載APK的選項即可直接下載APK安卓,就不用麻煩的去google play下載了。
網址:Moonlight Game Streaming | F-Droid - Free and Open Source Android App Repository
設備調試
相信大家串流,主要就是方便隨時隨地想玩就玩,所以我們實際串流設備就以手機加手柄這一場景為代表展示了:
為了操作方便,建議使用XBOX手柄,或者和XBOX相同鍵位邏輯映射佈局的手柄。我擁有的設備就是Xbox 手柄和雷蛇的一個便攜手柄。
像不像Steam Deck Lite版
首先在環境搭建那一步就自動配置成功的小夥伴,我們首先先將手機和PC置於同一局域網內,首次使用Moonlight先將手機與電腦輸入PIN碼配對。
此處操作在文章開頭的串流1.0中有具體介紹,此處就省略啦
以上操作完成後,我們之後出門直接使用外網就可以直接都點開moonlight等待它加載一下們就可以繼續鏈接我們之前配對過的電腦,開啟遊戲之旅了。
實際體驗
為了儘量讓大家能看出不同碼率(帶寬上行限制)的實際體驗,我將按照Moonlight推薦的幾檔設置進行畫面測試:
1.設備:2k(2000x1200)屏幕分辨率的聯想小新pad plus。
我手機是IphoneXR,720P屏幕分辨率就別難為它了,ipad的話主要是iOS平臺moonlight沒有串流性能檢測顯示,所以就用安卓端來測試吧。
2.測試串流畫面設置
分辨率、幀數、碼率
720P 30FPS 5Mbps
720P 60FPS 10Mbps
1080P 30FPS 10Mbps
追加:
1080P 60FPS 15Mbps(推薦20Mbps,我家的帶寬上行目前最多穩定15Mbps)
剛剛寫文章的功夫,之前預約的電信維護工程師來我家檢查了一下,現在已經上行30Mbps左右了。
對照組
分辨率、幀數、碼率
2K 30FPS 20 Mbps
1080P 電腦截圖
此處我就是用局域網進行串流測試,主要是和上面的廣域網串流做對比,不過我覺得上面的廣域網串流在15M上行帶寬下前三組的串流設置在手機上面倒是足以,畢竟steam deck,能穩定720p,60fps的3A遊戲也不多鴨。
效果如下:
720P 30FPS 5Mbps
720P 60FPS 10Mbps
1080P 30FPS 10Mbps
1080P 60FPS 15Mbps
2K 30FPS 20 Mbps
1080P 電腦截圖
可能大家還是無法很明顯的看出區別,我大致描述一下,或者大家可以在局域網設置對應參數感受一下也是一樣的,這裡用廣域網測試主要是看延遲和丟包。
根據我在電腦上面把截圖放大仔細觀察,畫質從低到高,720P到1080P在人物細節,紋理清晰的等等有比較明顯的畫質低到高的提升。
1080P和2K感觀差不太大,但是肯定是至少1080P以上畫質才不錯,並且要保證碼率在推薦值之上。
至於720P的畫質,我覺得在手機上面玩的話,如果你的帶寬上行不高,那做做任務不追求畫質還能接受啦,但是像光纖入戶200M以上的寬帶,上行30M以上的話,1080P60FPS或者追求畫質2K30FPS,2K60FPS稍微降低一丟丟碼率也足夠啦!
以上的測試截圖由於要做對比,所以截圖的為畫面靜止時的效果,實際串流體驗由於畫面在動所以實際需要的數據量對於靜態顯示一個畫面來說數據量會變多,所以不同分辨率之間的效果差距會更明顯一些。
補充:
1.安卓上的Moonlight相較於IOS有更多的設置,大家可以自己根據需求進行設置。
2.其實如果是在外面用免費WIFI串流倒是很香,如果是用流量就算你有100GB甚至更多估計也承受不,因為太費流量了。
這是我寫的一個簡單code,用來計算不同碼率串流一小時需要消耗的數據量,在網上隨便找的一個Python在線編程網頁,把code複製到裡面運行,根據提示輸入碼率的大小來查看,或者你用公式自己計算也可以!
公式:
碼率Mbps/8*3600=( )MB或者再除以1024就是( )GB了。
Code:
x=input("請輸入串流視頻的碼率,單位為Mbps:")
z=int(x)
y=(z/8*3600)
y1=round((z/8*3600)/1024,3)
print("該碼率串流一小時需要消耗",y,"MB或者是",y1,"GB")
3.推薦手機串流畫質:1080p,60fps(當然越高越好)
4.關於沒有公網的實現方法暫且採用串流1.0中的方法,或者使用Parsec進行串流,至於zerotier串流有時候很慢,可能是服務器在國外,並且多層NAT沒有打通採用的轉發流量,後續有時間我用雲服務器自建Moon試試看看能不能解決啦。
parsec不支持IOS系統
5.待補充
OK,以上就是今天折騰了一下午的全部內容啦,目前我也是再初步嘗試,如果內容有誤的地方,歡迎大家在評論區指正,如果大家有更好的方案或者嘗試了手動配置端口的方法,也可以把經驗分享到評論區哦!
別忘了一鍵三連,電池拉滿鴨!
#moonlight串流#