View a markdown version of this page

Amazon GameLift Streams 中的自訂串流解析度 - Amazon GameLift Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon GameLift Streams 中的自訂串流解析度

根據預設,Amazon GameLift Streams 會以 1920 × 1080 像素的業界標準全 HD 解析度,以標準 16 x 9 長寬比提供互動式串流。您可以為每個工作階段設定自訂解析度,以符合玩家裝置的螢幕形狀或長寬比。自訂解析度支援橫向、縱向和方形長寬比。

使用自訂解析度來:

  • 以原生裝置長寬比將全螢幕體驗串流至手機和平板電腦,無需填補或裁切。

  • 符合超寬監視器長寬比,以獲得原生寬螢幕體驗。

  • 支援具有任意維度的遊戲串流,可在non-full-screen體驗中嵌入。

無論串流類別或執行時間環境為何,您都可以搭配所有 Amazon GameLift Streams 服務組態使用自訂解析度。

解析度的運作方式

當您設定自訂解析度時,Amazon GameLift Streams 會將工作階段的虛擬監視器設定為所需的解析度。這將成為工作階段的監視器解析度。為了獲得最佳視覺效果品質,應用程式必須轉譯為設定的監視器解析度。

監視器解析度會決定虛擬監視器的維度,以及擷取影格的解析度。兩個額外的 Web SDK 設定會影響交付給玩家的串流解析度:

  • 最高解析度:限制串流解析度的 Web 開發套件設定。未指定時,不會套用任何上限,且會串流完整的監視器解析度。請參閱 與最大解析度的互動

  • 動態解析度:自動調整串流解析度,以提供檢視器網路連線可維持的最佳視覺品質。請參閱 與動態解析度的互動

設定都不會變更工作階段的監視器解析度。

自訂解析度限制

您指定的解決方案必須符合下列要求:

限制條件 Value
像素總計上限 2,073,600 (1920 × 1080)
寬度和高度範圍 320 – 4096 像素
維度同位 寬度和高度都必須是偶數

當您啟動工作階段時,服務會驗證這些限制條件。如果解決方案不符合要求,請求會失敗並出現驗證錯誤。

設定自訂解析度

您可以在使用主控台、CLI AWS 或 API 啟動串流工作階段時設定自訂解析度。

使用 Amazon GameLift Streams 主控台

若要使用自訂解析度測試串流:

  1. 開啟 Amazon GameLift Streams 主控台並導覽至您的串流群組。

  2. 選擇測試串流

  3. 解析度下拉式清單中,選取桌上型電腦、平板電腦或行動裝置的解析度。

  4. 選擇測試串流以啟動工作階段。

串流處於作用中狀態後,您可以在即時統計資料浮水印中檢視目前的解析度。

使用 AWS CLI

使用 start-stream-session命令搭配 --display-configuration 參數:

aws gameliftstreams start-stream-session \ --identifier sg-ExampleStreamGroup \ --application-identifier a-ExampleApp \ --protocol WebRTC \ --signal-request "your-signal-request" \ --display-configuration '{"Resolution":{"Width":1920,"Height":1080}}'

使用 API

StartStreamSession API 請求中,包含 DisplayConfiguration 參數:

{ "ApplicationIdentifier": "a-ExampleApp", "Protocol": "WebRTC", "SignalRequest": "your-signal-request", "DisplayConfiguration": { "Resolution": { "Width": 1920, "Height": 1080 } } }

計算裝置的最佳解析度

您可以使用任何符合解析度限制的解析度。以下公式是尋找特定長寬比最大解析度的一種建議方法。它會將可用像素最大化,以獲得最佳視覺品質:

height = floor_to_even( sqrt(2,073,600 * H / W) ) width = floor_to_even( height * W / H )

在此公式中, W:H 是目標長寬比,而 2,073,600是像素總數上限 (1920 × 1080)。函數會floor_to_even(x)四捨五入至最接近的偶整數。

範例 19.5:9 (行動電話)
height = floor_to_even( sqrt(2,073,600 * 9 / 19.5) ) = floor_to_even(978.2) = 978 width = floor_to_even( 978 * 19.5 / 9 ) = floor_to_even(2118.3) = 2118 → Resolution: 2118 × 978 (2,071,404 pixels, 99.9% utilization)

對於縱向解析度,計算橫向解析度並交換寬度和高度值。

裝置的一般解析度值

下列值使用涵蓋常見裝置類別的一般標準比率。個別裝置可能有略有不同的原生長寬比,從視覺上可忽略黑色長條。對於完美像素填充,請使用裝置的確切原生長寬比搭配上述公式。

Category 長寬比 橫向 縱向 比對裝置
桌面 16:9 1920 × 1080 1080 × 1920 桌面監視器、TVs、HD Mobile
桌面 16:10 1820 × 1138 1138 × 1820 寬螢幕監視器、Amazon Fire 平板電腦
桌面 21:9 2198 × 942 不適用 超全螢幕
平板電腦 3:2 1760 × 1174 1174 × 1760 各種 iPads
平板電腦 4:3 1660 × 1246 1246 × 1660 iPads、Android 平板電腦
行動應用程式 20:9 2142 × 964 964 × 2142 Google Pixel、Samsung Galaxy
行動應用程式 19.5:9 2118 × 978 978 × 2118 iPhonesSamsung Galaxy
行動應用程式 18:9 2036 × 1018 1018 × 2036 其他 Android 手機
其他 1:1 1440 × 1440 不適用 方形監視器

與最大解析度的互動

自訂解析度和最大解析度有不同的用途:

  • 自訂解析度:當您設定自訂解析度時,它會成為工作階段的監視器解析度。這是伺服器轉譯的內容,包括擷取影格的長寬比和像素維度。

  • 最高解析度:限制串流解析度的 Web 開發套件設定。上限符合所選層的方向週框方塊 (例如,720p 為 1280 × 720)。使用此設定以無法解碼完整解析度映像的低端裝置為目標。

如需最大解析度參數的詳細資訊,請參閱 Amazon GameLift Streams 文件頁面上的 Amazon GameLift Streams Web SDK API 參考。

與動態解析度的互動

動態解析度會自動調整串流解析度,以提供檢視器網路連線可維持的最佳視覺品質。此功能適用於 Amazon GameLift Streams Web SDK 1.3.0 版及更新版本。

動態解析度不會影響工作階段的監視器解析度。Amazon GameLift Streams 只會調整交付給玩家的串流解析度。當頻寬有限時,串流解析度會縮減,同時保留長寬比。當頻寬復原時,它會縮減至完整監視器解析度或最高解析度上限。

例如,如果您將自訂解析度設定為 1080 × 1920 (行動縱向,9:16),則玩家會在正常頻寬下接收完整的 1080 × 1920 串流。如果玩家的網路受限,動態解析度可能會將串流縮減到較低的解析度 (例如 720 × 1280),同時維持 9:16 長寬比。伺服器上的監視器解析度在整個過程中保持 1080 × 1920。

如需動態解析度參數的詳細資訊,請參閱 Amazon GameLift Streams 文件頁面上的 Amazon GameLift Streams Web SDK API 參考。

最佳實務

搭配 Amazon GameLift Streams 使用自訂解析度時,請遵循下列最佳實務:

  • 比對玩家的裝置長寬比,以填滿畫面,無需字母框或柱框。使用常見的解析度值或計算公式來尋找指定長寬比的最佳解析度。對於縱向行動遊戲,請使用縱向解析度來提供原生垂直體驗。

  • 針對串流體驗最佳化您的前端。確保您的 Web 用戶端在串流到行動裝置或平板電腦時正確處理串流的長寬比。

  • 在部署到玩家之前,使用自訂解析度測試您的應用程式。大多數應用程式會在全螢幕執行時自動適應監視器解析度。不過,某些應用程式可能無法正常處理非 16:9 解析度。

  • 確保您的遊戲中攝影機和 UI 適應長寬比。調整遊戲攝影機的視野,以顯示適當的場景量,而不是裁切檢視區。還原或重新定位 UI 元素以符合新的長寬比。

  • 避免在應用程式的執行時間變更虛擬監視器解析度。Amazon GameLift Streams 會在工作階段開始時設定監視器解析度。在遊戲期間修改的應用程式可能會產生非預期的結果。

  • 在您的應用程式和前端處理裝置輪換。監視器解析度會在工作階段期間固定。若要支援中串流裝置輪換,建議您將輪換訊號透過 應用程式與 Web 用戶端之間的資料通道通訊 傳送到應用程式。讓應用程式輪換其轉譯,並相應地更新您的前端。

疑難排解

下表說明常見問題、其原因和建議的解決方案。

問題 原因 解決方案
工作階段無法從驗證錯誤開始 解決方案不符合限制條件 確認您的解析度符合 中列出的所有限制條件自訂解析度限制
應用程式以錯誤的解析度轉譯 應用程式未以全螢幕執行,或在視窗化模式下以不同的解析度轉譯 設定應用程式以全螢幕執行。應用程式可以查詢系統,以取得設定的解析度。
串流解析度低於預期 (相同的長寬比) 最高解析度上限或動態解析度為作用中 這是最大解析度或動態解析度作用中時的預期行為。這兩個功能都會縮減串流解析度,同時保留長寬比。檢查 Web SDK 中的解析度上限或動態解析度設定。
串流解析度與自訂解析度不同 (不同的長寬比) 應用程式會在啟動或中串流期間變更監視器解析度 最大解析度和動態解析度不會造成此問題。這是某些覆寫監視器解析度之應用程式的已知行為。考慮使用不會覆寫監視器解析度的應用程式,或將應用程式設定為以全螢幕的監視器解析度進行轉譯。
黑色長條會出現在玩家的螢幕上 串流和裝置之間的長寬比不相符,或應用程式在內部以黑色長條轉譯 檢查黑色長條是否來自用戶端 (長寬比不相符) 或在應用程式本身內。使用符合玩家裝置長寬比的解析度值,或使用 中的公式計算最佳解析度計算裝置的最佳解析度