Quay lại Blog

Hướng dẫn / K6 · Định dạng và tương thích

Cùng một video, máy tính phát được còn điện thoại thì không: danh sách kiểm tra từng tầng (mỗi tầng đều kèm số đo thực nghiệm)

Máy tính mở được còn điện thoại thì không, lý do thường không ở chất lượng hình ảnh, cũng không ở chuyện tệp hỏng hay chưa. Trước khi một khung hình thật sự được vẽ ra, có bốn tầng mỗi tầng phán một lượt; tầng nào không qua thì bạn cũng chỉ thấy cùng một kết quả — “không mở được”. Nên bước đầu đúng không phải lấy công cụ khác nén lại lần nữa, mà là đọc tệp để biết tầng nào đang chặn bạn.

1. Trước khi một khung hình hiện ra, bốn tầng đã tự quyết xong

Bốn tầng này được phán riêng, nên triệu chứng cũng riêng: container sai là không mở chút nào; nhãn sai là mở rồi mà hình không chạy; âm thanh sai là mở ra im lặng; phụ đề sai là phim vẫn nguyên vẹn còn phụ đề thì biến. Gộp bốn triệu chứng ấy thành “công cụ này dở” là chỗ hay bị hiểu nhầm nhất của cả loại sản phẩm này.

2. Bước đầu là đọc tệp, không phải đổi công cụ

Đọc tới tầng nào soi tới tầng đó: bất kỳ công cụ kiểm tra nào liệt kê được cấu trúc bên trong tệp đều tách riêng container, tên codec của từng rãnh, nhãn rãnh, độ sâu bit, định dạng điểm ảnh, thời lượng và số byte. Bước này tốn vài phút, nhưng đổi cho bạn khỏi vài giờ thử đi thử lại.

Mọi số đo dưới đây lấy từ cùng một phép kiểm trên cùng một cỗ máy; môi trường đo viết ở mục 8.

MẫuContainerNhãn rãnh hình ảnhCấp độ/định dạng điểm ảnhKích thướcSố byte
Bmp4hev1Main 10/yuv420p10le1920×108012,973,400
Cmp4hvc1Main 10/yuv420p10le1920×108012,973,400

Hai tệp này ra từ cùng một đoạn hình ảnh dài hai phút, không một khung hình nào được mã hóa lại, số byte y hệt nhau; khác biệt duy nhất là cái nhãn rãnh bốn ký tự kia.

Đổi phần mở rộng không làm thay đổi tầng nào ở trên; nén lại hình ảnh ở bitrate cao hơn cũng không thay đổi được tầng đang chặn bạn. Xác định trước, rồi mới bắt tay vào làm.

3. Tầng nhãn: cùng một đoạn hình ảnh, hai cách ghi

Trong họ container MP4, HEVC được khai báo thành hvc1 hoặc hev1. Khác biệt nằm ở chỗ cấu hình giải mã được ghi ở đâu: hvc1 ghi nó vào phần mô tả sample của rãnh, nên bên đọc phối xong bộ giải mã trước khi chạm tới khung hình đầu tiên; hev1 thì cho phép phần dữ liệu đó đi cùng luồng. Bên cần có cấu hình ngay từ trước khi mở máy sẽ không chờ nó xuất hiện giữa đường.

Tầng này không cần nén lại một khung hình nào: mang hình ảnh đi theo kiểu sao chép rồi chỉ viết lại cái nhãn rãnh đó. Cặp mẫu ở trên đúng là làm vậy — cùng một đoạn hình ảnh ghi hai lần, hai tệp ra dài bằng nhau từng byte.

Điều đáng nhớ là cái giá của tầng này: nó là một phép sao chép, không phải một lần nén lại. Việc nào gói được phạm vi trong tầng này thì không nên đụng tới mã hóa lại.

4. Tầng âm thanh: hình ảnh hoàn hảo vẫn có thể bị một rãnh kéo lại

Sau khi hình ảnh đã được chấp nhận, thứ còn quyết định “có phát được không, có tiếng không” chỉ là rãnh âm thanh. Trong thực tế, họ này chứa nhiều thứ hơn đa số vẫn tưởng: cùng một lô tư liệu từng có mặt đủ TrueHD, E-AC3, AC-3, Opus, FLAC, MP2, MP3, DTS và PCM.

NguồnContainerHình ảnhÂm thanhTệp raÂm thanh được xử lý thế nào
GmatroskaHEVC Main 10TrueHDmp4/hvc1viết lại thành AAC (hình ảnh không nén lại)
ImatroskaHEVC Main 10E-AC3mp4/hvc1mang đi nguyên trạng (nhãn ec-3)

Cả hai lượt, hình ảnh đều không bị nén lại; khác biệt nằm hết ở âm thanh: một bên buộc phải viết lại, một bên mang đi trực tiếp được. Còn một chuyện mà chỉ đếm từng rãnh mới thấy — cách kiểm tra chỉ nhìn rãnh âm thanh đầu tiên sẽ cho ra đúng kiểu tệp mở được mà im lìm. Trong những phim đa ngôn ngữ, thứ tiếng bạn cần thường đang ngồi ở rãnh thứ hai.

5. Tầng phụ đề: chữ và ảnh là hai loại dữ liệu

NguồnÂm thanhPhụ đềTệp raPhụ đề đi về đâu
K (matroska)AC-3, Opus, AACSubrip, ASSmp4cả hai đều thành rãnh chữ (mov_text/tx3g)
F (matroska)FLACHDMV PGS (ảnh)—ảnh thì không có chỗ rãnh tương ứng

Loại chữ (SRT, ASS) dời sang container đích vẫn là chữ, bạn còn chỉnh được cỡ chữ và màu như cũ. Loại ảnh — phụ đề của đĩa Blu-ray bị nén thành từng trang ảnh, cùng loại mà DVD và đầu thu ghi lại — bản chất là ảnh chụp của phụ đề. Rãnh phụ đề của MP4 dựng theo chữ, nên ảnh không có chỗ để nằm.

Có hai đường làm được: nhận dạng chữ trong ảnh rồi chuyển về thành chữ để mang theo (nhận dạng là một khả năng chứ không phải một lời bảo đảm, chữ nhận ra có thể sai, nên phải kiểm trước khi giao), hoặc bỏ luôn rãnh phụ đề đó. Không một điểm ảnh nào bị động tới, và cũng không có chuyện in chữ cháy vào hình ảnh — kiểu đó tạo ra một rãnh hình ảnh mới, không còn là bộ phim gốc của bạn.

Hỏi “có hỗ trợ phụ đề không” là vô nghĩa. Câu cần hỏi là: rãnh này là chữ hay ảnh, và sau khi chuyển đổi nó còn là cùng một loại dữ liệu hay không.

6. Đọc được tệp, không đọc được thiết bị

Danh sách này đưa bạn tới chỗ “biết tầng nào cần động vào”. Nó không quyết hộ việc một cỗ máy cụ thể có nhận hay không: độ sâu bit và cấp độ, nhãn màu, tốc độ khung hình, 4:2:2, GOP dài — những điều kiện ấy phải đặt lên thiết bị thật mới có trả lời. Trong cùng một lô mẫu từng có mặt cả Main 10 lẫn Main 8, nhãn màu cũng có loại mang và loại không — những khác biệt đó đọc ra được trong tệp, nhưng chỉ trên máy mới thấy rõ.

7. Thứ tự kiểm tra để làm theo

  1. Đọc bên trong. Container, nhãn hình ảnh, từng rãnh âm thanh, từng rãnh phụ đề — một lượt là liệt kê đủ.
  2. Tầng container. Tệp không thuộc họ mà thiết bị đích chịu mở thì đã đủ giải thích chuyện “không mở chút nào”, dù phần hình ảnh bên trong hoàn toàn ổn.
  3. Tầng nhãn. Container đúng, hình ảnh là HEVC mà không đọc ra cấu hình, hãy viết lại nhãn theo mục 3 trước — đây là sao chép, không phải nén lại.
  4. Tầng âm thanh. Liệt kê mọi rãnh âm thanh, chứ không chỉ rãnh đầu; quyết định ngôn ngữ nào đứng trước là một lựa chọn có chủ ý, không phải ăn may.
  5. Tầng phụ đề. Chữ thì dời được, ảnh thì chỉ có nhận dạng hoặc bỏ.
  6. Chỉ tính tới nén lại hình ảnh sau cùng. Loại mà nhãn không cứu nổi mới cần mã hóa lại, đó là một việc khác chậm hơn và có ranh giới dung lượng riêng.

Sai thứ tự thì chính bạn sẽ lặp lại đúng một lỗi tới ba lần trên cùng một cỗ máy.

8. Số đo của trang này đến từ đâu, và chúng tôi làm gì

Mọi con số ở trên đều lấy từ một phép kiểm trên cùng một cỗ máy: Apple M2, macOS 27.2, công cụ kiểm tra dòng lệnh 9.0.2. Mẫu lấy từ gói thử nghiệm của chính chúng tôi. B và C được ghi bằng cách sao chép cùng một đoạn hình ảnh tự tạo (tệp nguồn là một tệp kiểm thử do chính chúng tôi tạo, dài hai phút: HEVC Main 10, 1920×1080, yuv420p10le, một rãnh âm thanh AAC, đọc lại được 14,956,756 byte; B và C chép hình của nó y nguyên vào hai tệp mp4, chỉ dán lại nhãn rãnh — số byte thì xem bảng ở trên); từ G tới L là các mẫu dựng quanh âm thanh và phụ đề của thời đĩa quang. Trang này không phân phối lại bất kỳ tệp mẫu nào — mọi cấu trúc ở trên bạn đều dựng lại được trên chính tư liệu mình đang có.

Chúng tôi làm một sản phẩm trên iPhone, iPad và Mac, và đầu ra chỉ có một container: MP4. Không có núm bitrate, bộ mã hóa hay độ phân giải; quyết định thay bạn chỉ gói lại thành ba lựa chọn — chỉ đổi hộp, đổi hộp kèm viết lại âm thanh, và mã hóa lại hình ảnh. Một tệp vốn đã phát trực tiếp được thì không tính là một lần chuyển đổi: ứng dụng không tạo thêm tệp thứ hai cho nó, cũng không đếm. Hình thức trả phí là mua một lần (giao dịch này trong sản phẩm gọi là Opus), và nó chỉ thay đổi việc sau đó bạn còn chuyển được bao nhiêu lần, chuyện đó viết ở đây.

Câu hỏi thường gặp

Đổi tên .mkv thành .mp4 có được không?

Không, bước này chưa bao giờ là đường tắt. Phần mở rộng chỉ là cái nhãn; đổi nhãn không viết lại cấu trúc bên trong container, cũng không đổi codec hình ảnh. Khi mở tệp, thiết bị đọc cấu trúc bên trong chứ không đọc tên tệp. Đổi tên rồi thì xác suất “mở được” vẫn y nguyên, còn bạn thì mất luôn cơ hội biết tầng nào đang có vấn đề.

Chỉ viết lại nhãn thì tệp có thành chuyện khác không?

Không. Cặp mẫu ở trên đọc lại cho số byte bằng nhau tuyệt đối (đều là 12,973,400), và không một khung hình nào bị nén lại. Đó chính là giá trị của tầng này: tầng giải quyết được bằng một phép sao chép thì không nên đem mã hóa lại ra thử.

Phim của tôi có năm rãnh âm thanh, liệu có còn đúng một rãnh?

Rãnh phải được phán từng rãnh, cả tệp không bị kết luận bằng một câu chung. Rãnh mang theo được thì đi theo từng rãnh, rãnh không mang nổi thì sang đường mã hóa lại; thứ thật sự tạo ra cảnh “chỉ còn một rãnh” là kiểu làm việc chỉ nhìn rãnh âm thanh đầu tiên. Với phim đa ngôn ngữ, hãy đếm rõ ngôn ngữ bạn cần đang ngồi ở rãnh thứ mấy trước khi bắt tay.

Phụ đề ảnh có bỏ nguyên trạng vào MP4 được không?

Không. Rãnh phụ đề của MP4 dựng theo chữ, nên loại ảnh không có chỗ tương ứng. Chỉ có hai cách làm được: nhận dạng thành chữ rồi mang theo (có thể sai, phải kiểm), hoặc bỏ rãnh phụ đề đó. Không tồn tại cách thứ ba vừa giữ nguyên hình ảnh gốc vừa nhét nó vào rãnh chữ.

Những số đo này có tính lại được trên máy của tôi không?

Thứ được đọc là bên trong tệp, nên máy nào cũng tính lại được — tệp bạn đang cầm có gì thì công cụ kiểm tra liệt kê ra đủ. Phần không tính lại được chỉ là nửa sau: phía thiết bị có nhận hay không thì chỉ còn cách phát thật một lần. Trang này cho thứ tự phán đoán, không cho một bảng buộc bạn phải tin.


Axiom One LLC — CineX