

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

# Amazon GameLift Streams 中的自訂串流解析度
<a name="custom-stream-resolution"></a>

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

使用自訂解析度來：
+ 以原生裝置長寬比將全螢幕體驗串流至手機和平板電腦，無需填補或裁切。
+ 符合超寬監視器長寬比，以獲得原生寬螢幕體驗。
+ 支援具有任意維度的遊戲串流，可在non-full-screen體驗中嵌入。

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

## 解析度的運作方式
<a name="custom-stream-resolution-how-it-works"></a>

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

監視器解析度會決定虛擬監視器的維度，以及擷取影格的解析度。兩個額外的 Web SDK 設定會影響交付給玩家的串流解析度：
+ **最高解析度：**限制串流解析度的 Web 開發套件設定。未指定時，不會套用任何上限，且會串流完整的監視器解析度。請參閱 [與最大解析度的互動](#custom-stream-resolution-max-resolution)。
+ **動態解析度：**自動調整串流解析度，以提供檢視器網路連線可維持的最佳視覺品質。請參閱 [與動態解析度的互動](#custom-stream-resolution-dynamic-resolution)。

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

## 自訂解析度限制
<a name="custom-stream-resolution-constraints"></a>

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


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

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

## 設定自訂解析度
<a name="custom-stream-resolution-set"></a>

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

### 使用 Amazon GameLift Streams 主控台
<a name="custom-stream-resolution-set-console"></a>

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

1. 開啟 [Amazon GameLift Streams 主控台](https://console.aws.amazon.com/gameliftstreams/)並導覽至您的串流群組。

1. 選擇**測試串流**。

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

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

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

### 使用 AWS CLI
<a name="custom-stream-resolution-set-cli"></a>

使用 `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
<a name="custom-stream-resolution-set-api"></a>

在 [StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) API 請求中，包含 `DisplayConfiguration` 參數：

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

## 計算裝置的最佳解析度
<a name="custom-stream-resolution-calculate"></a>

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

```
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)`四捨五入至最接近的偶整數。

**Example 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)
```

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

## 裝置的一般解析度值
<a name="custom-stream-resolution-presets"></a>

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


| 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 | 不適用 | 方形監視器 | 

## 與最大解析度的互動
<a name="custom-stream-resolution-max-resolution"></a>

自訂解析度和最大解析度有不同的用途：
+ **自訂解析度：**當您設定自訂解析度時，它會成為工作階段的監視器解析度。這是伺服器轉譯的內容，包括擷取影格的長寬比和像素維度。
+ **最高解析度：**限制串流解析度的 Web 開發套件設定。上限符合所選層的方向週框方塊 （例如，720p 為 1280 × 720)。使用此設定以無法解碼完整解析度映像的低端裝置為目標。

如需最大解析度參數的詳細資訊，請參閱 Amazon GameLift Streams [文件頁面上的 Amazon GameLift Streams](https://docs.aws.amazon.com/gameliftstreams/) Web SDK API 參考。

## 與動態解析度的互動
<a name="custom-stream-resolution-dynamic-resolution"></a>

動態解析度會自動調整串流解析度，以提供檢視器網路連線可維持的最佳視覺品質。此功能適用於 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](https://docs.aws.amazon.com/gameliftstreams/) Web SDK API 參考。

## 最佳實務
<a name="custom-stream-resolution-best-practices"></a>

搭配 Amazon GameLift Streams 使用自訂解析度時，請遵循下列最佳實務：
+ **比對玩家的裝置長寬比，以填滿畫面，無需字母框或柱框。**使用常見的解析度值或計算公式來尋找指定長寬比的最佳解析度。對於縱向行動遊戲，請使用縱向解析度來提供原生垂直體驗。
+ **針對串流體驗最佳化您的前端。**確保您的 Web 用戶端在串流到行動裝置或平板電腦時正確處理串流的長寬比。
+ **在部署到玩家之前，使用自訂解析度測試您的應用程式。**大多數應用程式會在全螢幕執行時自動適應監視器解析度。不過，某些應用程式可能無法正常處理非 16：9 解析度。
+ **確保您的遊戲中攝影機和 UI 適應長寬比。**調整遊戲攝影機的視野，以顯示適當的場景量，而不是裁切檢視區。還原或重新定位 UI 元素以符合新的長寬比。
+ **避免在應用程式的執行時間變更虛擬監視器解析度。**Amazon GameLift Streams 會在工作階段開始時設定監視器解析度。在遊戲期間修改的應用程式可能會產生非預期的結果。
+ **在您的應用程式和前端處理裝置輪換。**監視器解析度會在工作階段期間固定。若要支援中串流裝置輪換，建議您將輪換訊號透過 [應用程式與 Web 用戶端之間的資料通道通訊](data-channels.md) 傳送到應用程式。讓應用程式輪換其轉譯，並相應地更新您的前端。

## 疑難排解
<a name="custom-stream-resolution-troubleshooting"></a>

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


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