通过 Upwork 认识我? 如果您是通过 Upwork 找到我并希望合作,请通过 Upwork 联系我。Upwork 客户在 Upwork 之外发送的消息将不会得到回复。
对比🎬 字幕与隐藏字幕

DCP Subtitles: SMPTE ST 428-7 vs Interop - Which Format to Request

SMPTE ST 428-7 wraps DCP subtitles in MXF with an embedded font; Interop delivers plain XML. Here is how to export each with SeConv and which one to request.

Dao Huy (Lucas)7 min read8 部分 · 对照表
DCP Subtitles: SMPTE ST 428-7 vs Interop - Which Format to Request

💡 For modern DCP deliveries, use SMPTE ST 428-7 (2014): namespace http://www.smpte-ra.org/schemas/428-7/2014/DCST, XML wrapped in an MXF track file (SMPTE ST 429-5) with the font embedded as a UUID-named asset. Interop (CineCanvas) delivers a plain XML file with a separate .ttf font. When in doubt, ask the facility house which format their cinema server supports.

Key takeaways

  • SMPTE ST 428-7 (2014) uses root element <SubtitleReel> with namespace http://www.smpte-ra.org/schemas/428-7/2014/DCST; Interop (CineCanvas) uses <DCSubtitle> with no formal namespace.
  • SMPTE wraps everything in an MXF track file (SMPTE ST 429-5) with the font UUID-embedded inside; Interop delivers a plain XML file alongside a separate .ttf font file.
  • SMPTE supports encryption (like picture and sound); Interop does not.
  • Both formats use frame-count timecodes (HH:MM:SS:FF), but SMPTE declares the frame rate via <EditRate> while Interop counts in 4 ms ticks internally.
  • SeConv format names: DCinemaSmpte2014Mxf for a deliverable MXF asset, DCinemaInterop for a plain-XML Interop file.

What actually changes between SMPTE and Interop at the XML level?

DCP subtitles come in two formats, and the difference starts at the root element. SMPTE ST 428-7 (2014) defines a SubtitleReel root with namespace http://www.smpte-ra.org/schemas/428-7/2014/DCST. Interop CineCanvas - a proprietary format originally developed by Texas Instruments - uses a DCSubtitle root with no formal namespace (or a digicine.com-based namespace in some implementations).

That namespace string is the first thing a cinema server checks. DCP-o-matic, OpenDCP, and facility-side QC tools all identify the DCP type from that string. Getting it wrong means your subtitles load as the wrong format, or fail to load at all.

SMPTE also adds metadata fields that Interop lacks: a formal <Language> element using BCP 47 codes (e.g. vi for Vietnamese, zh for Chinese), <ContentTitleText>, and <IssueDate>. Interop stores the movie title in <MovieTitle> and uses plain language names ("Vietnamese") rather than codes.

Format comparison at a glance

I keep this table as a reference for every DCP subtitle delivery. The key dividing line is the container: SMPTE is an MXF asset; Interop is a plain XML file.

PropertyInterop (CineCanvas)SMPTE ST 428-7:2014
Root element<DCSubtitle><SubtitleReel>
XML namespaceNone / digicine.comhttp://www.smpte-ra.org/schemas/428-7/2014/DCST
ContainerPlain XML file in packageMXF track file (ST 429-5)
Font deliverySeparate .ttf in subfolderUUID-named asset embedded in MXF
Timing unit4 ms ticks (250 per second)Frame counts via <EditRate>
EncryptionNoYes (via KDM)
Ruby / 3D textNoYes
StandardizationInterop doc (not SMPTE)SMPTE published standard

How is the font packaged in each format?

This is the most practically significant difference I run into. In an Interop DCP, the font is a plain .ttf file sitting in a subfolder of the package, referenced by filename in the XML. In a SMPTE DCP, the font is embedded inside the MXF track file, referenced by a UUID declared in a <LoadFont> element.

That UUID-named font file has no extension. If the declared UUID is urn:uuid:b2c3d4e5-f6a7-8901-bcde-f12345678901, the font file is named exactly b2c3d4e5-f6a7-8901-bcde-f12345678901 with nothing after it. SeConv handles this automatically when you use DCinemaSmpte2014Mxf with the --dcinema-font flag.

Facility-side validators reject a SMPTE DCP whose font is delivered as a loose .ttf instead of embedded in the MXF. Wrong font embedding is one of the most common QC failures I see on DCP subtitle jobs.

What do EditRate and frame-count timecodes mean?

Both SMPTE and Interop use frame-count timecodes in the format HH:MM:SS:FF, where the last field counts frames rather than milliseconds. SMPTE declares the frame rate explicitly via two elements: <EditRate>24 1</EditRate> (meaning 24/1 = 24 fps) and <TimeCodeRate>24</TimeCodeRate>. These must match the DCP picture reel exactly.

Interop instead counts in 4 ms ticks (250 ticks per second), and may express times as decimal seconds (00:03:12.500). Most tools convert this automatically, but a timecode copy-pasted between formats can land on a slightly different frame if the conversion is done naively.

Always specify the frame rate when exporting. A 24 fps subtitle file loaded into a 25 fps reel will be subtly off. For 29.97 (drop-frame), the DCP picture is timed to drop-frame; a subtitle file exported as non-drop-frame will drift by about 3.6 seconds over an hour.

Producing a SMPTE ST 428-7:2014 subtitle file with SeConv

I use Subtitle Edit's SeConv for cinema subtitle exports. The DCinemaSmpte2014Mxf format produces the deliverable MXF asset. The --dcinema-font flag embeds the font; --reel-duration sets the picture reel length in frames so the asset reports the correct duration to the DCP server.

# Plain XML for review (no MXF wrapping - useful before the DCP facility step):
seconv.exe "in.srt" "DCinemaSmpte2014" --fps 24 --output-folder "out/" --overwrite

# Deliverable SMPTE DCP asset (XML wrapped in MXF with font embedded):
seconv.exe "in.srt" "DCinemaSmpte2014Mxf" --fps 24 --dcinema-font "Arial.ttf" --reel-duration 172800 --output-folder "out/" --overwrite

# Interop CineCanvas XML (for older venues that require it):
seconv.exe "in.srt" "DCinemaInterop" --fps 24 --output-folder "out/" --overwrite
  • DCinemaSmpte2014: plain XML with correct 2014 namespace, useful for review or manual MXF wrapping.
  • DCinemaSmpte2014Mxf: wraps the XML and embeds the font into an MXF track file - the actual deliverable form.
  • --dcinema-font: the .ttf file to embed; required for the Mxf variant.
  • --reel-duration: picture length in frames (172800 = 2 hours at 24 fps, since 2 x 3600 x 24 = 172800).
  • DCinemaInterop: produces the CineCanvas-dialect plain XML file, still required by some venues.

A minimal SMPTE ST 428-7:2014 XML file, before MXF wrapping, looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<SubtitleReel xmlns="http://www.smpte-ra.org/schemas/428-7/2014/DCST">
  <Id>urn:uuid:a1b2c3d4-e5f6-7890-abcd-ef1234567890</Id>
  <ContentTitleText>My Feature Film</ContentTitleText>
  <IssueDate>2026-11-06T00:00:00</IssueDate>
  <ReelNumber>1</ReelNumber>
  <Language>vi</Language>
  <EditRate>24 1</EditRate>
  <TimeCodeRate>24</TimeCodeRate>
  <StartTime>00:00:00:00</StartTime>
  <LoadFont ID="Arial">urn:uuid:b2c3d4e5-f6a7-8901-bcde-f12345678901</LoadFont>
  <SubtitleList>
    <Font ID="Arial" Color="FFFFFFFF" Size="42">
      <Subtitle SpotNumber="1"
                TimeIn="00:03:12:00"
                TimeOut="00:03:14:12"
                FadeUpTime="00:00:00:00"
                FadeDownTime="00:00:00:00">
        <Text VAlign="bottom" VPosition="8.0" HAlign="center">
          Chào mừng đến với Hội An.
        </Text>
      </Subtitle>
    </Font>
  </SubtitleList>
</SubtitleReel>
  • xmlns: the 2014 namespace is mandatory; 2007 and 2010 versions still exist in the wild but some QC validators reject them.
  • Id: a fresh UUID per file - never reuse across deliveries.
  • EditRate / TimeCodeRate: must match the picture reel frame rate exactly.
  • Language: BCP 47 / ISO 639-1 code (e.g. vi for Vietnamese).
  • VAlign="bottom" VPosition="8.0": places text near the bottom image edge, minimizing cross-server rendering variance (the 2014 vertical positioning baseline is more consistent than 2010).

What can I handle myself, and when does a DCP facility make sense?

For subtitle-only DCPs - a short film, a festival premiere, one or two reels - SeConv plus the SMPTE MXF export covers the subtitle asset itself. What it cannot do is wrap that asset into a full DCP package (CPL, PKL, ASSETMAP), test playback on a Dolby or Barco server, or issue Key Delivery Messages (KDMs) for encrypted deliveries. That part requires DCP creation software (DCP-o-matic is free and open-source) or a dedicated post-production facility.

If the client is a studio or streaming platform requiring encrypted subtitle tracks, full multi-reel SMPTE DCP handling, or facility-tested playback, bringing in a DCP house is the right call. The subtitle translation and timed-text work - converting scripts, timing to picture, checking CPS, verifying that all glyphs render correctly - is what I do. The DCP wrapping is packaging, and most facilities charge a flat fee for it once you hand them a clean SMPTE XML or MXF.

See my DCP subtitle service for how I handle the translation and timed-text step of a cinema subtitle delivery.

FAQ

Can I still deliver Interop subtitles for a 2026 cinema release?

Yes. Interop is still widely accepted at festivals and older venues. Many exhibitors run DLP Series 1 projectors that cannot render SMPTE DCP subtitle MXF track files. For a wide theatrical release with mixed venue types, delivering both formats or confirming support with each venue's technical team is the safest approach.

How do I find out which format a cinema server accepts?

Ask the facility house or the exhibitor's technical team. For festival submissions, the submission portal or technical specification sheet will state SMPTE or Interop (or both). DCP-o-matic can test-render a subtitle asset locally, but actual server playback requires the target hardware.

Can DCP subtitles carry Vietnamese or other non-Latin text?

Yes. Both SMPTE and Interop DCP subtitles support Unicode, so Vietnamese (with full diacritics), Chinese, Japanese, and other scripts can appear - provided the embedded font contains those glyphs. SMPTE also adds Ruby text support for CJK pronunciation guides. This is completely separate from CEA-608/708 closed captions, which are an English broadcast standard and cannot encode Vietnamese or CJK.

What is the minimum subtitle display duration in a DCP?

In practice, subtitles should display for at least 15 frames (around 0.6 seconds at 24 fps) with a minimum 2-frame gap between adjacent events. The first subtitle in reel 1 should not start before the 4-second mark. Staying within these values avoids compatibility issues across different cinema servers.

How do I verify a SMPTE DCP subtitle XML is correct before delivery?

Open the XML and confirm: (1) namespace is exactly http://www.smpte-ra.org/schemas/428-7/2014/DCST; (2) EditRate and TimeCodeRate match the picture reel; (3) each Subtitle element has a unique SpotNumber; (4) font UUID in LoadFont matches the asset name in the MXF. DCP-o-matic parses SMPTE subtitle MXF files and reports structural errors.

Official Sources

Dao Huy (Lucas)
Dao Huy (Lucas)
岘港大学外国语大学毕业。每份认证翻译均附签名的准确性声明(USCIS、IRCC)。

作者:Đào Huy(Lucas),越南语译员与本地化专家(英、中、法译越)。 See translation services →

报价WhatsApp