---
title: Nested Composition (Overlay + Background Replacement)
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/video-editing-nested-composition-overlay-background-replacement
---

## Nested Composition (Overlay + Background Replacement)


The most advanced composition pattern: an avatar video recorded on green screen, with the green replaced by a custom background, then overlaid on a main B-roll video.

### Architecture


```mermaid
flowchart TD
    A[Main B-roll Video] --> B[KalturaOperationResource]
    C[Avatar on Green Screen] --> D[KalturaOverlayAttributes]
    E[Custom Background] --> F[KalturaReplaceBackgroundAttributes]
    F --> D
    D --> B
    B --> G[Final Composed Output]
```


The nesting structure:
- Outer: `KalturaOperationResource` with main video as source
- Level 1: `KalturaOverlayAttributes` in `mediaCompositionAttributesArray` — the avatar
- Level 2: `KalturaReplaceBackgroundAttributes` in the overlay's `resourceMediaCompositionAttributesArray` — removes green from avatar and adds background

### Full Example


```bash
curl -X POST "$KALTURA_SERVICE_URL/service/media/action/addContent" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entryId=$KALTURA_ENTRY_ID" \
  -d "resource[objectType]=KalturaOperationResource" \
  -d "resource[resource][objectType]=KalturaEntryResource" \
  -d "resource[resource][entryId]=$KALTURA_MAIN_BROLL_ENTRY_ID" \
  -d "resource[resource][flavorParamsId]=0" \
  -d "resource[operationAttributes][0][objectType]=KalturaClipAttributes" \
  -d "resource[operationAttributes][0][offset]=0" \
  -d "resource[operationAttributes][0][duration]=60000" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][objectType]=KalturaOverlayAttributes" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][resource][objectType]=KalturaEntryResource" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][resource][entryId]=$KALTURA_AVATAR_GREEN_SCREEN_ENTRY_ID" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][resource][flavorParamsId]=0" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][overlayPlacement]=8" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][overlayScalePercentage]=0.3" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][marginsPercentage]=0.05" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][overlayShape]=1" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][resourceMediaCompositionAttributesArray][0][objectType]=KalturaReplaceBackgroundAttributes" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][resourceMediaCompositionAttributesArray][0][resource][objectType]=KalturaUrlResource" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][resourceMediaCompositionAttributesArray][0][resource][url]=https://example.com/virtual-office.jpg" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][resourceMediaCompositionAttributesArray][0][backgroundColorCode]=0x6FED48" \
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][resourceMediaCompositionAttributesArray][0][foregroundScalePercentage]=1.0"
```


### Audio in Nested Compositions

Audio flows from all layers. Use `audioAttributes` to control mixing:


```bash
  -d "resource[operationAttributes][0][mediaCompositionAttributesArray][0][audioAttributes][volume]=0.7"
```


This sets the overlay (avatar) audio to 70% and the main video audio to 30% (complementary model: main = 1 - overlay volume).
