> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/sv/generating-ads/banner-x-responsive/bannerx-video-captions.md).

# Videoundertexter för Banner X

## Översikt

Den Epsilon Retail Media -plattformen stöder filer för undertexter och transkribering för Banner X videokampanjer. Annonsörer laddar upp undertextfiler (`.vtt`, `.srt`) och transkriberingsfiler (`.txt`) tillsammans med sina videotillgångar. Din integration använder dessa fil-URL:er från annonssvaret och återger undertexter i din videospelare.

Denna integration hjälper dig att uppfylla tillgänglighetskrav såsom det europeiska tillgänglighetsdirektivet (EAA), som kräver användarstyrda undertexter på offentligt videomaterial.

* Undertextfiler är tidssynkroniserade undertextspår för din videospelare.
* Transkriberingsfiler är klartextrepresentationer av videons ljudinnehåll för SEO och skärmläsaranvändning.

Denna guide täcker:

* Hur undertext- och transkriberingsfiler visas i VAST- och JSON-annonssvar
* VAST 4.3 `<ClosedCaptionFile>` -elementstruktur
* JSON `videoTranscriptFiles[]` -matrisstruktur
* Hur man återger undertexter med hjälp av de tillhandahållna CDN-URL:erna
* Testning och validering

### Leveransmodell

URL:er för undertextfiler (`.vtt` / `.srt`) levereras endast via VAST, inte JSON.\
URL:er för transkriberingsfiler (`.txt`) levereras endast via JSON, inte VAST.\
Undertexter används av din videospelare; transkriberingar används på sidnivå.

## Integrationsflöde

Undertext- och transkriberingsfiler följer samma leveransväg som videotillgångar. Inga ytterligare API-anrop krävs utöver din befintliga Banner X annonsbegäran.

1. En annonsör laddar upp video-, undertext- och transkriberingsfiler via kampanjguiden.
2. Filer valideras, lagras och levereras via CDN.
3. Din befintliga Banner X annonsbegäran returnerar undertext-URL:er i VAST och transkriberings-URL:er i JSON.
4. Din videospelare läser undertextfilens URL och återger undertexter.
5. Din sida visar valfritt transkriberingstext för tillgänglighet eller SEO.

## Filtyper som stöds

| Tillgång       | Format                           | Maxstorlek                                                           |
| -------------- | -------------------------------- | -------------------------------------------------------------------- |
| Undertexter    | `.vtt` (WebVTT), `.srt` (SubRip) | Konfigurerbar per återförsäljares innehållsstandard (i regel 1–4 MB) |
| Transkribering | `.txt` (klartext)                | Konfigurerbar per återförsäljares innehållsstandard (i regel 1–4 MB) |

Filer levereras som de är; plattformen konverterar inte format. Din videospelare ansvarar för att återge undertexter.

## Förutsättningar

Bekräfta följande innan du integrerar undertexter och transkriberingar:

* Befintlig Banner X videointegration — du använder redan `<MediaFiles>` från VAST-taggen i fältet adm. Se [Videoannonser](/retail-media-interface/integration/sv/generating-ads/banner-x-responsive/video-ads-banner-x.md) för ett komplett exempel på annonssvar som inkluderar leverans av undertext- och transkriberingsfiler.
* Videospelare med undertextstöd — WebVTT- eller SRT-undertextspår (t.ex. HTML5 `<track>` -element eller motsvarande infödda spelar-API).
* Funktion aktiverad för din namnområde — kontakta ditt konto-team för att aktivera uppladdning av undertexter och transkriberingar för ditt namnområde.
* CORS konfigurerat — tillåt hämtning från annan domän av `.vtt` -filer från Epsilon CDN-domänen när du använder HTML5 `<track>` -element.

## Autentisering och säkerhet

Ingen ytterligare autentisering krävs. Undertext- och transkriberingsfiler levereras via samma CDN som videotillgångar. Fil-URL:er som returneras i annonssvaret är offentligt tillgängliga och använder samma säkerhetsmodell som videotillgångars URL:er.

Om din videospelare använder HTML5 `<track>` -element för att läsa in `.vtt` -filer, se till att din sidas Content Security Policy tillåter hämtning från Epsilon CDN-domänen. CDN ställer in lämpliga CORS-huvuden för hämtning från annan domän `<track>` -inläsning.

## Steg 1: Parsa undertextfiler från VAST-svaret

**Syfte:** Hämta tidssynkroniserade URL:er för undertextfiler från VAST XML i fältet adm för återgivning i din videospelare.

### Vad du behöver göra

* Leta i din VAST-parser efter `<ClosedCaptionFiles>` element inom varje `<Linear>` annonskreativ (i `<MediaFiles>`).
* Varje `<ClosedCaptionFile>` underordnat element innehåller CDN-URL:en som sitt textinnehåll.
* Det `type` attributet anger MIME-typen (`text/vtt` or `application/x-subrip` för SRT).
* Det `language` attributet anger textningsspråket (t.ex. `en`).

### Exempel på VAST-svar

```xml
<Linear>
  <Duration></Duration>
  <MediaFiles>
    <ClosedCaptionFiles>
      <ClosedCaptionFile type="text/vtt" language="en"><![CDATA[https://dev12.flavedo.io./citrus/0f04cbc2-c933-4384-8d37-772e939d8d02]]></ClosedCaptionFile>
    </ClosedCaptionFiles>
    <Mezzanine><![CDATA[https://dev12.flavedo.io./citrus/37bb15a2-fd4d-4eb1-9dd7-7630b5df29d1]]></Mezzanine>
    <MediaFile delivery="progressive" type="video/mp4" width="1280" height="720" bitrate="8700" codec="h264"><![CDATA[https://dev12.flavedo.io./citrus/37bb15a2-fd4d-4eb1-9dd7-7630b5df29d1]]></MediaFile>
  </MediaFiles>
  <VideoClicks>
    <ClickTracking><![CDATA[https://integration.dev12.citrusad.com/v1/resource/second-c/...]]></ClickTracking>
    <ClickThrough></ClickThrough>
  </VideoClicks>
</Linear>
```

### Validering

* Bekräfta att din VAST-parser extraherar `<ClosedCaptionFile>` -URL när den finns.
* Bekräfta att din parser hanterar avsaknaden av `<ClosedCaptionFiles>` på ett korrekt sätt (inte alla kampanjer innehåller undertexter).

### Vanliga fel

| Fel                                  | Orsak                                                                                                                                                                     |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<ClosedCaptionFiles>` hittades inte | Kampanjen kanske inte har någon godkänd undertextfil, eller så är undertextleverans inte aktiverad ännu för din miljö. Detta är förväntat för kampanjer utan undertexter. |

## Steg 2: Parsa transkriptionsfiler från JSON-svaret

**Syfte:** Hämta URL:er för transkriptionsfiler i klartext från JSON-annons-svaret för SEO eller tillgänglighet för skärmläsare.

### Vad du behöver göra

* I Banner X generera svar, leta efter `videoTranscriptFiles` -matrisen på varje annonsobjekt.
* Varje post innehåller en `videoFileId` så att du kan matcha transkriptioner till deras motsvarande video.
* Transkriptioner är klartext (`.txt`) — använd dem för SEO-metadata, skärmläsare eller alternativ textvisning.

### Exempel på JSON-svar

```json
"videoTranscriptFiles": [
  {
    "videoFileId": "a6f4c4a6-6982-4a8c-9a81-ecdfd4b3fa36",
    "format": "txt",
    "url": "https://dev12.flavedo.io./citrus/03d98ae2-67d5-49d3-9e9b-c8f278520657",
    "language": "en"
  }
]
```

### Validering

* Bekräfta att din JSON-parser läser `videoTranscriptFiles` -matrisen när den finns.
* Bekräfta korrekt hantering när matrisen är tom eller saknas.

{% hint style="info" %}
Undertextfils-URL:er (för `.vtt`/`.srt`) levereras endast via VAST, inte JSON. Transkriptionsfiler (`.txt`) levereras endast via JSON, inte VAST. Denna uppdelning speglar de olika användningsmönstren: undertexter är för videospelare (VAST), transkriptioner är för tillgänglighet på sidnivå (JSON).\*\*
{% endhint %}

## Steg 3: Rendera undertexter i din videospelare

**Syfte:** Visa stängda undertexter för shoppare under videouppspelning.

### Vad du behöver göra

* När du har parsat undertext-URL:en från VAST lägger du till ett `<track>` -element i din HTML5-videospelare (eller motsvarande i din nativa spelar-SDK).
* Ställ in `kind="captions"`. Använd `default` -attributet om du vill att undertexter ska vara aktiverade som standard.
* För .srt-filer kräver vissa spelare konvertering till WebVTT vid körtid (lägg till `WEBVTT\n\n` före och ersätt komma med punkt i tidsstämplar).

### Exempel på HTML5-implementering

```html
<video controls crossorigin="anonymous">
  <source src="https://cdn.citrusad.com/video/abc123.mp4" type="video/mp4">
  <track
    kind="captions"
    src="https://cdn.citrusad.com/captions/def456.vtt"
    srclang="en"
    label="English"
    default
  >
</video>
```

### Validering

* Spela upp videon och bekräfta att undertexter visas som ett överlägg.
* Bekräfta att shopparen kan slå på/av undertexter via spelarkontrollerna.
* Bekräfta att undertexterna är tidssynkroniserade med videoljudet.

### Vanliga fel

| Fel                                             | Lösning                                                                                                                   |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| Undertexter läses inte in (CORS-fel i konsolen) | Se till att din Content Security Policy och CORS-konfiguration tillåter hämtning av `.vtt` -filer från Epsilon CDN-domän. |
| Undertexter ser vanställda eller tomma ut       | Verifiera att filens URL returnerar giltigt WebVTT-innehåll. Hämta URL:en direkt för att inspektera filen.                |

## Steg 4: (Valfritt) Visa transkriptionstext

**Syfte:** Tillhandahålla tillgängligt textinnehåll bredvid eller under videon för skärmläsare och SEO.

### Vad du behöver göra

* Hämta transkriptions-URL:en från `videoTranscriptFiles` -posten i JSON-svaret.
* Använd transkriptionstexten för tillgänglighet, SEO, skärmläsare eller andra återförsäljarspecifika användningsfall.

### Exempel

```html
<details>
  <summary>Video transcript</summary>
  <p id="transcript-content"></p>
</details>
<script>
  fetch('https://cdn.citrusad.com/transcripts/ghi789.txt')
    .then(r => r.text())
    .then(text => {
      document.getElementById('transcript-content').textContent = text;
    });
</script>
```

## Datamodeller och fältdefinitioner

### VAST: `ClosedCaptionFile` -element

| Attribut / fält | Typ          | Krävs | Beskrivning                 | Godkända värden                  |
| --------------- | ------------ | ----- | --------------------------- | -------------------------------- |
| `type`          | sträng       | Ja    | MIME-typ för undertextfilen | `text/vtt, application/x-subrip` |
| `language`      | sträng       | No    | Språk för undertextspåret   | e.g. `en`                        |
| Elementtext     | sträng (URL) | Ja    | CDN-URL för undertextfilen  | HTTPS-URL                        |

### JSON: `videoTranscriptFiles`

| Fält          | Typ          | Krävs | Beskrivning                                    | Godkända värden |
| ------------- | ------------ | ----- | ---------------------------------------------- | --------------- |
| `videoFileId` | sträng       | Ja    | ID för videofilen som detta transkript tillhör | UUID            |
| `format`      | sträng       | Ja    | Filformat för transkriptet                     | `txt`           |
| `url`         | sträng (URL) | Ja    | CDN-URL för transkriptfilen                    | HTTPS-URL       |
| `language`    | sträng       | Ja    | Språk för transkriptet                         | e.g. `en`       |

## Bakåtkompatibilitet

Dessa tillägg är helt bakåtkompatibla:

* Om inga undertextfiler är kopplade till en kampanj utelämnas `<ClosedCaptionFiles>` elementet helt från VAST.
* Om inga transkriptfiler är kopplade `videoTranscriptFiles` saknas eller är en tom matris i JSON.
* Befintliga integrationer som inte tolkar dessa nya element fortsätter att fungera utan ändringar.

## Testning, sandbox och go-live

### Sandbox- / testmiljö

* Begär åtkomst till en testnamnrymd med uppladdning av undertexter och transkript aktiverad (kontakta ditt konto-team).
* Ladda upp en testkampanj med ett exempel på `.vtt` undertextfil via kampanjguiden.
* Godkänn kampanjen genom granskningscykeln.
* Anropa Banner X genereringsändpunkten och inspektera VAST- och JSON-svaret.

### Exempel på testfall

| Test                         | Steg                                                   | Förväntat resultat                                        |
| ---------------------------- | ------------------------------------------------------ | --------------------------------------------------------- |
| VAST-undertext finns         | Begär annons för kampanj med godkänd `.vtt` undertext  | VAST innehåller `<ClosedCaptionFiles>` med giltig CDN-URL |
| VAST-undertext saknas        | Begär annons för kampanj utan undertexter              | No `<ClosedCaptionFiles>` element i VAST                  |
| JSON-transkript finns        | Begär annons för kampanj med godkänd `.txt` transkript | JSON innehåller `videoTranscriptFiles` matris med post    |
| Undertextfil tillgänglig     | Hämta CDN-URL:en direkt från VAST-svaret               | Returnerar giltigt `WebVTT` innehåll med WEBVTT-huvud     |
| Spelaren återger undertexter | Ladda video + undertextspår i din spelare              | Undertexter visas tidssynkroniserade med videoljudet      |
| CORS för track-element       | Ladda `.vtt` via `<track>` cross-origin                | Inga CORS-fel i webbläsarkonsolen; undertexter återges    |

### Checklista inför go-live

* [ ] VAST-parser extraherar `<ClosedCaptionFile>` URL:er när de finns
* [ ] JSON-parser läser `videoTranscriptFiles[]` när det finns
* [ ] Graciös reservlösning (fallback) när undertexter eller transkriptioner saknas
* [ ] Videospelaren återger undertexter från CDN-URL
* [ ] Kunden kan slå på/av undertexter
* [ ] CORS validerat för cross-origin `.vtt` fetch
* [ ] Transkriptionstext tillgänglig (om du implementerar steg 4)
* [ ] Testad med både `.vtt` och `.srt` undertextformat

## Felsökning och vanliga frågor

### `<ClosedCaptionFiles>` elementet saknas i VAST-svaret

**Trolig orsak:** Kampanjen har ingen godkänd undertextfil, eller så är leverans av undertexter inte aktiverad i din miljö.

**Lösning:**

* Bekräfta att kampanjen har en godkänd undertextfil (uppladdad och godkänd vid granskning).
* Kontakta ditt konto-team för att verifiera att funktionen är aktiverad för ditt namnrymd (namespace).

### CORS-fel vid inläsning av `.vtt` via `<track>` element

**Trolig orsak:** Content Security Policy eller webbläsarens CORS-tillämpning blockerar cross-origin fetch av `.vtt` filen.

**Lösning:**

* Lägg till Epsilon CDN-domänen i din Content Security Policys `connect-src` och `media-src` direktiv.
* Ställ in `crossorigin="anonymous"` på överordnat `<video>` element vid behov.

### Undertexter återges men är inte synkade med videon

**Trolig orsak:** Undertextfilen skapades med felaktiga tidsstämplar, eller så är filen en SRT som läses in som VTT utan konvertering.

**Lösning:**

* Hämta undertextfilens URL och granska tidsstämplarna mot videouppspelningen.
* Om filen är .srt och din spelare endast stöder .vtt, konvertera vid körtid (lägg till `WEBVTT\n\n`före, ersätt `,` med `.` i tidsstämplar).

### Transkriptions-URL returnerar 404

**Trolig orsak:** Kampanjen uppdaterades och transkriptionsfilen togs bort, eller så beror det på fördröjning i CDN-spridningen.

**Lösning:**

* Hämta annons-svaret igen för att få den aktuella fil-URL:en.
* Om problemet kvarstår, kontakta support.

När du kontaktar support, inkludera:

* Begärande-ID (Request ID) eller korrelations-ID från generate-anropet
* Tidsstämpel (UTC) för annonsbegäran
* Det `<ClosedCaptionFile>` or `videoTranscriptFiles` URL som misslyckas
* Webbläsarkonsolfel (för CORS-problem)
* Namnrymd (namespace) och kampanj-ID

## Relaterade artiklar

* [Videoannonser](/retail-media-interface/integration/sv/generating-ads/banner-x-responsive/video-ads-banner-x.md)
* [Generera banner X-annonser för olika placeringar](/retail-media-interface/integration/sv/generating-ads/banner-x-responsive/requesting-banner-x-ads.md)
* [Referens för Banner X](/retail-media-interface/integration/sv/references/banner-x-reference-1.md)
* [Förhandsgranskare för Banner X](/retail-media-interface/integration/sv/generating-ads/banner-x-responsive/integrating-your-banner-x-previewer.md)

<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/integration/sv/generating-ads/banner-x-responsive/bannerx-video-captions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
