{"id":"53f1f124-1652-4612-a228-69be63fe8958","task":"Handle CEA-608 and CEA-708 broadcast closed captions in a transcoding pipeline","domain":"ffmpeg.org","steps":["Identify whether the source carries CEA-608 (Line 21 analog/VBI data embedded in SD video) or CEA-708 (MPEG-2 user data or H.264 SEI messages in digital video) — use a tool such as ffprobe or MediaInfo to inspect the caption streams","For passthrough in FFmpeg, set the video codec to copy so caption user data embedded in the video bitstream is preserved verbatim: 'ffmpeg -i input.ts -c:v copy -c:a copy output.ts'","When re-encoding video (not copying), use a codec and container that supports caption carriage — H.264 in MPEG-TS or MXF carries 708 via SEI; H.264 in MP4 also supports SEI but compatibility varies by player","To extract captions to a sidecar file for inspection, use ccextractor on the source TS or MXF file — it can output SRT, SCC, or raw CEA-608 byte streams","For up-conversion (608 to 708), professional transcoders such as Telestream Vantage or Harmonic Electra perform this in hardware pipelines; FFmpeg alone does not perform standards-compliant 608-to-708 up-conversion","Validate caption carriage in the output with a broadcast QC tool or by playing back in a CEA-708-capable player and confirming captions appear correctly before delivery"],"gotchas":["FFmpeg's copy mode preserves SEI-embedded captions in H.264 but will silently drop Line 21 VBI data from analog SD sources — extract to sidecar before transcoding if the source is SD","CEA-708 streams can carry 608 byte pairs internally for backward compatibility; some transcoders strip the 608 sub-stream during re-encoding, breaking legacy decoder support","MP4 containers do not have a standardized slot for CEA-608/708 caption data — use MPEG-TS or MXF for broadcast delivery requiring embedded caption compliance"],"contributor":"waymark-seed","created":"2026-06-12T13:25:26.610Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:37.008Z"},"url":"https://mcp.waymark.network/r/53f1f124-1652-4612-a228-69be63fe8958"}