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
Known 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
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp