

# SDK di trasmissione IVS: origini di immagini personalizzate I Streaming in tempo reale
<a name="broadcast-custom-image-sources"></a>

Le origini di input di immagini personalizzate consentono a un'applicazione di fornire il proprio input di immagini all'SDK di trasmissione anziché limitarsi alle fotocamere preimpostate. Una origine di immagine personalizzata può essere semplice come una filigrana semitrasparente o una scena statica "torno subito" oppure può consentire all'app di eseguire ulteriori elaborazioni personalizzate come l'aggiunta di filtri di bellezza alla fotocamera.

Quando si utilizza una sorgente di input di immagine personalizzata per il controllo personalizzato della fotocamera (ad esempio l'utilizzo di librerie di filtri estetici che richiedono l'accesso alla fotocamera), l'SDK di trasmissione non è più responsabile della gestione della fotocamera. Invece, l'applicazione è responsabile della corretta gestione del ciclo di vita della fotocamera. Consulta la documentazione ufficiale della piattaforma su come la tua applicazione dovrebbe gestire la fotocamera.

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

Dopo aver creato una sessione `DeviceDiscovery`, crea un'origine di input di immagine:

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

Questo metodo restituisce un `CustomImageSource`, che è una sorgente immagine supportata da un [Surface](https://developer.android.com/reference/android/view/Surface) Android standard. La classe secondaria `SurfaceSource` può essere ridimensionata e ruotata. Puoi inoltre creare un `ImagePreviewView` per visualizzare un'anteprima del contenuto.

Per recuperare il sottostante `Surface`:

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

Questo `Surface` può essere utilizzato come buffer di output per producer di immagini come Camera2, OpenGL ES e altre librerie. Il caso d'uso più semplice è disegnare direttamente una bitmap statica o un colore sulla tela di Surface. Tuttavia, molte librerie (come le librerie di filtri estetici) forniscono un metodo che consente a un'applicazione di specificare un `Surface` esterno per il rendering. È possibile utilizzare un metodo del genere per passare questo `Surface` alla libreria di filtri, il che consente alla libreria di emettere frame elaborati per lo streaming della sessione di trasmissione.

Questa `CustomImageSource` può essere avvolta in un `LocalStageStream` e restituito dal `StageStrategy` per la pubblicazione su un `Stage`.

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

Dopo aver creato una sessione `DeviceDiscovery`, crea un'origine di input di immagine:

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

Questo metodo restituisce un `IVSCustomImageSource`, che è una fonte di immagini che consente alla domanda di inviare `CMSampleBuffers` manualmente. Per i formati pixel supportati, consulta Riferimento all'SDK di trasmissione iOS; un collegamento alla versione più recente è presente nel manuale [Note di rilascio di Amazon IVS](release-notes.md) per l'ultima versione dell'SDK di trasmissione.

I campioni inviati all'origine personalizzata verranno trasmessi alla fase:

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

Per lo streaming di video, utilizzare questo metodo in una richiamata. Ad esempio, se si utilizza la fotocamera, ogni volta che viene ricevuto un nuovo buffer campione da un `AVCaptureSession`, l'applicazione può inoltrare il buffer campione alla sorgente di immagine personalizzata. Se lo desideri, l'applicazione può applicare ulteriori elaborazioni (come un filtro di bellezza) prima di inviare il campione alla sorgente di immagine personalizzata.

La `IVSCustomImageSource` può essere avvolta in un `IVSLocalStageStream` e restituito dal `IVSStageStrategy` per la pubblicazione su un `Stage`.