CEA-608 và CEA-708: khác nhau kỹ thuật thế nào và giao file gì?
💡 CEA-608 dùng lưới cố định 32 cột × 15 hàng với bộ ký tự Latin, ba chế độ hiển thị caption và tốc độ truyền 2 byte mỗi khung hình: định dạng file là SCC. CEA-708 bổ sung hiển thị theo cửa sổ, tối đa 63 dịch vụ caption, ký tự Unicode và font linh hoạt: bản giao hàng open-source được khuyến nghị là SMPTE-TT (ST 2052-1), không phải MCC.
Ý chính
- CEA-608: lưới 32 cột × 15 hàng, chế độ pop-on / roll-up / paint-on, bộ ký tự Latin, định dạng SCC, timecode 29.97 drop-frame
- CEA-708: hiển thị theo cửa sổ, tối đa 63 dịch vụ, 8 cửa sổ mỗi dịch vụ, ký tự Unicode (phụ thuộc font), SMPTE-TT (ST 2052-1) cho giao hàng open-source
- CEA-708 nhúng byte tương thích 608 để decoder cũ vẫn hoạt động: file SMPTE-TT đúng chuẩn mang cả hai lớp
- CEA-608 là chuẩn Latin duy nhất. Tiếng Việt có dấu, chữ Hán và các ký tự phi-Latin khác cần track phụ đề riêng với định dạng Unicode như SRT hoặc TTML
- Để phát hiện chuẩn nào trong file, chạy
ccextractor input.mp4 --out report: file chỉ có 608 tạo một luồng output; file 708 tạo hai luồng
CEA-608 chỉ định kỹ thuật những gì?
CEA-608, hiện được CTA xuất bản là CTA-608-E, là hệ thống caption closed Line 21 trong phát sóng Bắc Mỹ. Chuẩn này ra đời từ thập niên 1970 và được dùng đến khi chuyển đổi sang ATSC kỹ thuật số. Khi mở file SCC trong trình soạn thảo, mỗi dòng là một timecode theo sau bởi các từ hex 4 ký tự phân cách bằng dấu cách. Mỗi từ là 2 byte dữ liệu caption, truyền với tốc độ một từ mỗi khung hình ở 29,97 fps drop-frame.
Lưới hiển thị cố định: 32 cột trên 15 hàng. Bộ mã hóa đặt văn bản theo một trong ba chế độ:
- Pop-on: văn bản được nạp trước vào bộ đệm ẩn, rồi hiện ra tất cả cùng lúc theo tín hiệu (phổ biến nhất với nội dung đã ghi sẵn)
- Roll-up: 2, 3 hoặc 4 dòng cuộn lên khi có dòng mới (phổ biến cho phát sóng trực tiếp)
- Paint-on: ký tự xuất hiện từng cái từ trái sang phải khi được truyền (thời gian thực, từng ký tự)
| Tính năng | Giá trị CEA-608 |
|---|---|
| Kích thước lưới | 32 cột × 15 hàng |
| Kênh caption | CC1, CC2 (Field 1); CC3, CC4 (Field 2) |
| Kênh văn bản | T1-T4 (Field 1); T5-T8 (Field 2) |
| Chế độ caption | Pop-on, roll-up (2, 3 hoặc 4 hàng), paint-on |
| Bộ ký tự | Latin (tiếng Anh, Pháp, Tây Ban Nha, Bồ Đào Nha, Đức, cộng gói Bắc Âu mở rộng) |
| Ký tự phi-Latin | Không hỗ trợ (xem ghi chú bên dưới) |
| Timecode | 29,97 drop-frame (tiêu chuẩn phát sóng) |
| Tốc độ truyền | 2 byte mỗi khung hình |
| Định dạng file | SCC (Scenarist Closed Captions) |
| Đường truyền tín hiệu (analog) | VBI Line 21 |
| Đường truyền tín hiệu (kỹ thuật số) | VANC / H.264 SEI NAL unit |
Ràng buộc bộ ký tự là thông tin quan trọng nhất tôi nêu rõ trong mỗi đề xuất phát sóng. CEA-608 hỗ trợ tiếng Anh, Tây Ban Nha, Pháp và các ngôn ngữ Tây Âu khác qua các gói ký tự cơ bản và mở rộng. Tiếng Việt với dấu thanh và chữ Hán nằm hoàn toàn ngoài bộ ký tự này. Tiếng Anh là bản giao hàng đúng cho luồng CEA-608; các ngôn ngữ khác đặt trên track phụ đề riêng với định dạng Unicode như SRT hoặc TTML.
CEA-708 bổ sung gì và mang byte tương thích 608 như thế nào?
CEA-708 (nay là CTA-708-E) là tiêu chuẩn caption truyền hình kỹ thuật số được giới thiệu cho ATSC DTV và HDTV. Thay vì lưới cố định, 708 dùng các cửa sổ độc lập: mỗi dịch vụ caption có thể định nghĩa tối đa 8 cửa sổ, mỗi cửa sổ có vị trí, kích thước, kiểu font, cỡ chữ, màu nền/chữ, kiểu viền và hướng cuộn riêng.
Các bổ sung so với 608 quan trọng cho giao hàng:
- Tối đa 63 dịch vụ caption (Service 1 = ngôn ngữ chính, Service 2 = ngôn ngữ phụ)
- 8 kiểu font: Default, Mono Serif, Proportional Serif, Mono Sans-Serif, Proportional Sans-Serif, Casual, Cursive, Small Caps
- 4 cỡ chữ: Small, Standard, Large, Extra Large
- 8 màu nền và màu chữ (đen, trắng, đỏ, xanh lá, xanh dương, vàng, tím, lam) với 4 mức độ trong suốt mỗi màu
- 5 kiểu viền: None, Raised, Depressed, Uniform (outline), Drop Shadow
- Hỗ trợ ký tự Unicode, tuy nhiên hiển thị thực tế phụ thuộc bộ font của thiết bị
Thiết kế tương thích là yếu tố trung tâm của chất lượng giao hàng. CEA-708 nhúng dữ liệu CEA-608 vào luồng packet: các kênh 608 CC1-CC4 đi kèm dưới dạng byte tương thích trong dữ liệu 708. Người xem với decoder 608 cũ nhìn thấy văn bản tương thích từ CC1 hoặc CC2. Màn hình hỗ trợ 708 hiển thị đầy đủ bố cục cửa sổ 708. Bản giao hàng broadcast đúng chuẩn phải vượt qua QC trên cả hai decoder. Tôi dùng caption-inspector, công cụ open-source của Comcast chạy qua Docker. Công cụ này xác minh file SMPTE-TT decode sạch ở cả lớp 608 và 708 trước khi nộp.
Làm thế nào để phát hiện chuẩn nào có trong file của tôi?
Cách trực tiếp nhất là chế độ report của CCExtractor. Lệnh này đọc file, in ra dữ liệu caption tìm thấy và không ghi gì lên đĩa:
ccextractor input.mp4 --out report
Nếu file chỉ chứa dữ liệu CEA-608, CCExtractor báo cáo một luồng output. Nếu có cả CEA-708, nó báo cáo hai luồng. Sau khi biết chuẩn nào có trong file, tôi dùng các lệnh trích xuất sau:
# Trích xuất CEA-608 Field 1 (CC1) sang SRT
ccextractor input.mp4 -1 -o output_608.srt
# Trích xuất CEA-708 Service 1 sang SMPTE-TT (TTML)
ccextractor input.mp4 --service 1 --out smptett -o output_708.ttml
# Trích xuất đồng thời cả CEA-608 và CEA-708
ccextractor input.mp4 -1 --service 1
-1: xử lý Field 1 (mặc định); dùng-2cho Field 2 hoặc-12cho cả hai--service 1,2: trích xuất 708 Services 1 và 2 (ngôn ngữ chính và phụ)--out smptett: output ra SMPTE Timed Text (TTML), định dạng được khuyến nghị cho bản giao hàng 708 trong quy trình open-source--out report: in nội dung caption và thống kê ra stdout mà không ghi file nào
Để kiểm tra xem file MP4 có luồng closed caption được nhúng ở cấp ffprobe không, tôi probe luồng video đầu tiên để tìm trường closed_captions bằng cách phân tích một đoạn đọc ngắn:
ffprobe -v error -select_streams v:0 -show_entries stream=closed_captions -analyze_frames -read_intervals "%+#30" -of default=noprint_wrappers=1 input.mp4
-select_streams v:0: chỉ kiểm tra luồng video đầu tiên-analyze_frames -read_intervals "%+#30": giải mã 30 khung hình để phát hiện dữ liệu caption nhúng trong SEI chỉ xuất hiện ở cấp khung hình-show_entries stream=closed_captions: trả vềclosed_captions=1nếu có dữ liệu caption trong track video
Định dạng giao hàng nào dùng cho chuẩn nào?
Với phát sóng Mỹ và nộp hồ sơ tuân thủ, tôi dùng SCC cho bản giao hàng CEA-608 và SMPTE-TT (ST 2052-1 XML) cho CEA-708. MCC là lựa chọn lịch sử cho 708. Nhưng mọi bản export MCC open-source tôi kiểm tra đều không qua được lớp dịch vụ 708 trong caption-inspector. Công cụ chỉ decode được byte tương thích 608, không phải nội dung dịch vụ 708 thực sự. SMPTE-TT là con đường open-source đáng tin cậy.
| Mục tiêu giao hàng | Chuẩn | Định dạng file | Timecode |
|---|---|---|---|
| Phát sóng analog Mỹ (di sản) | CEA-608 | SCC | 29,97 drop-frame |
| Phát sóng kỹ thuật số Mỹ / cáp (ATSC) | CEA-608 + CEA-708 | SMPTE-TT (ST 2052-1) | 29,97 drop-frame |
| Streaming Mỹ (Netflix, web SDH) | SDH / closed captions | TTML/IMSC hoặc SRT | Media-relative (HH:MM:SS,mmm) |
| Nộp hồ sơ tuân thủ DTV | CEA-708 | SMPTE-TT (ST 2052-1) | 29,97 drop-frame |
Lệnh SeConv để tạo file SCC (608) từ nguồn SRT:
seconv input.srt ScenaristClosedCaptions --fps 29.97 --output-folder out --overwrite
Và cho file SMPTE-TT (tương thích 708):
seconv input.srt SMPTE-TT2052 --output-folder out --overwrite
Tôi tự làm được gì và khi nào chuyên gia thay đổi kết quả?
Đọc file SCC trong trình soạn thảo và nhận ra dữ liệu hex chỉ mất vài giây. Chạy CCExtractor ở chế độ report rồi export SRT sang SCC qua SeConv là quy trình đơn giản với công cụ miễn phí. Nếu bạn đang tạo caption cho video web, WCAG 1.2.2 được thỏa mãn bởi file SRT hoặc VTT với đúng nội dung: hiệu ứng âm thanh, tên diễn giả và thoại. Không cần định dạng broadcast mã hóa cho trường hợp đó.
Điểm mà kiến thức định dạng thực sự thay đổi kết quả: tuân thủ phát sóng Mỹ và nộp hồ sơ quy định. 47 CFR Part 79 là quy tắc closed captioning của FCC. Quy tắc này yêu cầu caption phải được mã hóa đúng định dạng cho kênh phân phối. SCC/608 dùng cho phát sóng legacy; SMPTE-TT/708 cho ATSC kỹ thuật số. File SRT đúng timing không thỏa mãn yêu cầu đó. Giới hạn cột (32 ký tự mỗi hàng trong 608) và yêu cầu timecode 29,97 drop-frame đều cần xác thực trước khi giao hàng.
Với nội dung đến nền tảng streaming hoặc broadcast Mỹ, tôi chạy SCC hoặc SMPTE-TT hoàn chỉnh qua caption-inspector để xác nhận cả lớp 608 và 708 decode đúng văn bản và vị trí trước khi nộp. Bước QC đó bắt được lỗi mà kiểm tra bằng mắt file SRT không phát hiện được.
Với bản giao hàng caption khép kín và SDH tiếng Anh trên các tựa streaming và broadcast Mỹ, tôi bao gồm cả nội dung lẫn định dạng, đến tận bước QC. Nếu bạn muốn kiểm tra độc lập file đã sản xuất, dịch vụ QC caption chạy full decode bằng caption-inspector và báo cáo chính xác những gì decoder broadcast nhìn thấy.
Câu hỏi thường gặp
CEA-608 có còn cần thiết năm 2026 không, hay 708 đã thay thế hoàn toàn?
Cả hai vẫn cần thiết cho phát sóng kỹ thuật số Mỹ. Quy định ATSC yêu cầu phát sóng kỹ thuật số phải mang lớp tương thích CEA-608 bên trong luồng 708 để decoder cũ tiếp tục hoạt động. Tạo bản giao hàng chỉ có 708 mà thiếu byte tương thích 608 sẽ không qua QC cho bản nộp phát sóng ATSC. Trong thực tế, file SMPTE-TT được tạo đúng mang cả hai lớp và đáp ứng cả hai yêu cầu.
File của tôi là .mcc: nó chứa dữ liệu 608 hay 708?
File MCC mang cả CEA-708 lẫn byte tương thích 608. MCC là định dạng nhị phân do các công cụ thương mại như Telestream MacCaption tạo ra cho giao hàng ATSC. Nếu bạn nhận được MCC từ khách hàng và cần trích xuất lớp 608, CCExtractor xử lý được: ccextractor input.mcc -1 -o output.srt. Để tạo bản giao hàng 708 mới trong quy trình open-source, hãy dùng SMPTE-TT. Bản export MCC từ Subtitle Edit tạo ra lớp dịch vụ 708 mà caption-inspector không decode được trong thử nghiệm của tôi.
CEA-708 có thể mang caption tiếng Việt hoặc tiếng Trung không?
CEA-708 công bố hỗ trợ Unicode, nhưng hiển thị thực tế phụ thuộc bộ font của thiết bị. Quan trọng hơn, với giao hàng phát sóng Mỹ toàn bộ pipeline được hiệu chỉnh cho tiếng Anh. Đường đúng cho track tiếng Việt hoặc tiếng Trung là file SRT, TTML hoặc VTT riêng biệt giao kèm file caption tiếng Anh. CEA-608 chỉ mang ký tự Latin và không hỗ trợ ký tự phi-Latin.
Làm thế nào để xác minh file SMPTE-TT decode đúng?
Tôi dùng caption-inspector, công cụ QC open-source của Comcast, chạy qua Docker: docker run --rm -v /path/to/dir:/data nebulabroadcast/caption-inspector -o /data /data/output.ttml. Công cụ tạo ra file -C1.608 hiển thị văn bản tương thích 608 và file -S1.708 hiển thị nội dung dịch vụ 708. Nếu file 708 trống hoặc chỉ có lỗi, lớp dịch vụ 708 bị lỗi. Nếu bạn chỉ thấy output 608, file SMPTE-TT có thể chỉ mang byte tương thích mà không có nội dung dịch vụ 708 thực sự.
Master của tôi là 23,976 fps: vẫn có thể giao CEA-608 không?
CEA-608 được thiết kế cho phát sóng 29,97 fps. Với master 23,976 fps, cần xác nhận với đài phát sóng xem họ chấp nhận SCC timed theo 23,976 hay yêu cầu chuyển đổi frame rate sang 29,97 trước. Hầu hết thông số giao hàng phát sóng Mỹ là 29,97 drop-frame, và master 23,976 thường được chuyển đổi trước khi mã hóa caption. Với giao hàng streaming ở 23,976 fps, TTML/IMSC với timing tương đối theo media là cách tiếp cận gọn gàng hơn và tránh hoàn toàn sự không khớp frame rate.
Nguồn
- CCExtractor GitHub repository - các flag dòng lệnh (-1, --service, --out smptett, --out report) được xác minh dựa trên output help của phiên bản 0.96.5 đã cài. Kiểm tra tháng 10/2026.
- W3C TTML2 Recommendation (W3C) - không gian tên TTML và cấu trúc tài liệu dùng trong bản giao hàng SMPTE-TT. Kiểm tra tháng 10/2026.
- WCAG 2.1 Understanding 1.2.2: Captions (Prerecorded) - yêu cầu nội dung caption (thoại, hiệu ứng âm thanh, tên diễn giả) cho tuân thủ WCAG Level A. Kiểm tra tháng 10/2026.
- ffprobe documentation (ffmpeg.org) - các tùy chọn -analyze_frames, -read_intervals và -show_entries stream=closed_captions để phát hiện dữ liệu caption nhúng. Kiểm tra tháng 10/2026.
Written by Dao Huy (Lucas), Vietnamese translator & localization specialist (EN · ZH · FR → Vietnamese). See translation services →
