

# IVS 廣播 SDK：自訂影像來源 \| 即時串流
<a name="broadcast-custom-image-sources"></a>

自訂圖像輸入來源讓應用程式能將自己的圖像輸入提供給廣播開發套件，而不是僅限於預設攝影機。自訂圖像來源可以是簡單的半透明浮水印或靜態的「馬上回來」場景，也可以是允許應用程式執行額外的自訂處理，像是在相機上加上美顏濾鏡。

當您使用自訂圖像輸入來源對相機進行自訂控制時 (例如，使用需要相機存取權的美顏濾鏡程式庫)，就不再由廣播開發套件負責管理相機。而是由應用程式負責正確處理相機的生命週期。請參閱官方平台文件，以了解您的應用程式應該如何管理相機。

## Android
<a name="custom-image-sources-android"></a>

建立 `DeviceDiscovery` 工作階段後，建立圖像輸入來源：

```
CustomImageSource imageSource = deviceDiscovery.createImageInputSource(new BroadcastConfiguration.Vec2(1280, 720));
```

此方法會傳回 `CustomImageSource`，這是一個由標準 Android [Surface](https://developer.android.com/reference/android/view/Surface) 支持的圖像來源。`SurfaceSource` 可以調整大小和旋轉的子類別。您還可以建立 `ImagePreviewView` 以顯示其內容的預覽。

若要檢索底層 `Surface`：

```
Surface surface = surfaceSource.getInputSurface();
```

此 `Surface` 可以作為圖像製作工具 (像是 Camera2、OpenGL ES 和其他程式庫）的輸出緩衝。最簡單的使用案例是將靜態點陣圖或顏色直接繪製到 Surface 的 Canvas 中。但是，許多程式庫 (像是美顏濾鏡程式庫) 都有提供一種方法，讓應用程式能指定外部 `Surface` 進行渲染。你可以使用這樣的方法來將此 `Surface` 傳遞到濾鏡程式庫，這允許程式庫輸出處理過的影格，以便廣播工作階段進行串流。

此 `CustomImageSource` 可以包裝在 `LocalStageStream` 中，並由 `StageStrategy` 傳回以發布到 `Stage`。

## iOS
<a name="custom-image-sources-ios"></a>

建立 `DeviceDiscovery` 工作階段後，建立圖像輸入來源：

```
let customSource = broadcastSession.createImageSource(withName: "customSourceName")
```

這個方法會傳回 `IVSCustomImageSource`，這是一個允許應用程式手動提交 `CMSampleBuffers` 的圖像來源。有關支援的像素格式，請參閱 iOS 廣播開發套件參考文件；最新版本的連結位於 [Amazon IVS 版本備註](release-notes.md)中，可以取得最新的廣播開發套件版本。

提交到自訂來源的範例將會串流至舞台：

```
customSource.onSampleBuffer(sampleBuffer)
```

針對串流影片，請在回呼中使用此方法。例如，如果您使用的是相機，則每次從 `AVCaptureSession` 收到新範本緩衝時，應用程式可以將範本緩衝轉發到自訂圖像來源。如果需要，應用程式可以在將樣本提交給自訂圖像來源之前執行進一步處理 (像是美顏濾鏡)。

該 `IVSCustomImageSource` 可以包裝在 `IVSLocalStageStream` 中，並由 `IVSStageStrategy` 傳回以發布到 `Stage`。