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
- Container. Thiết bị có muốn mở tệp này hay không — thứ nó quyết định là “mở được hay không”, chứ không phải “hay hay dở”.
- Nhãn của rãnh hình ảnh. Cùng một đoạn hình ảnh HEVC, trong họ container MP4, có thể được ghi thành hai kiểu khai báo khác nhau. Hai tệp có hình ảnh giống nhau từng byte mà hành vi thì ngược nhau hoàn toàn.
- Rãnh âm thanh. Hình ảnh đúng hết vẫn có thể khiến cả tệp bị từ chối chỉ vì một rãnh trong đó, hoặc mở ra mà không có tiếng.
- Rãnh phụ đề. Phụ đề chữ và phụ đề ảnh là hai loại dữ liệu, còn rãnh phụ đề của MP4 được dựng theo chữ.
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ẫu | Container | Nhãn rãnh hình ảnh | Cấp độ/định dạng điểm ảnh | Kích thước | Số byte |
|---|---|---|---|---|---|
| B | mp4 | hev1 | Main 10/yuv420p10le | 1920×1080 | 12,973,400 |
| C | mp4 | hvc1 | Main 10/yuv420p10le | 1920×1080 | 12,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ồn | Container | Hình ảnh | Âm thanh | Tệp ra | Âm thanh được xử lý thế nào |
|---|---|---|---|---|---|
| G | matroska | HEVC Main 10 | TrueHD | mp4/hvc1 | viết lại thành AAC (hình ảnh không nén lại) |
| I | matroska | HEVC Main 10 | E-AC3 | mp4/hvc1 | mang đ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 thanh | Phụ đề | Tệp ra | Phụ đề đi về đâu |
|---|---|---|---|---|
| K (matroska) | AC-3, Opus, AAC | Subrip, ASS | mp4 | cả hai đều thành rãnh chữ (mov_text/tx3g) |
| F (matroska) | FLAC | HDMV 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õ.
- Một câu “đây là HEVC” không thành câu trả lời; phải đọc ra nhãn, độ sâu bit, âm thanh và phụ đề thì mới đủ để bạn bó phạm vi lại còn một hai tầng.
- Cùng một đoạn hình ảnh chạy thông trên một hộp khác không đồng nghĩa với hộp này đã chạy — container và codec là hai biến số.
- Mẫu ngắn chứng minh cấu trúc, không chứng minh cách nó xử sự về dung lượng và chất lượng; những kết luận đó chỉ có thể đến từ phim dài và máy thật.
- Không nên tin thẳng vào bất kỳ “bảng thiết bị” nào, kể cả trang này: lấy chính tệp của mình phát một lượt trên cỗ máy đó mới là phép nghiệm thu duy nhất có giá. Danh sách container và codec đã có số đo thực nghiệm ở đây.
7. Thứ tự kiểm tra để làm theo
- Đọ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ê đủ.
- 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.
- 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.
- 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.
- Tầng phụ đề. Chữ thì dời được, ảnh thì chỉ có nhận dạng hoặc bỏ.
- 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.
- Nội dung có DRM bảo vệ thì không được xử lý, kể cả phim thuê hoặc mua từ cửa hàng.
- Phụ đề mà bản chất chưa bao giờ là chữ vẫn có thể được nhận dạng thành chữ; nhận dạng thì có thể sai, hình ảnh không bị động một chút nào, và không in chữ cháy vào hình.
- Khi dựng lại phụ đề, phân biệt giản thể – phồn thể sẽ mất.
- Ở con đường nén lại hình ảnh, nếu tệp ra mà lớn hơn bản gốc thì nó bị chặn lại, thay vì vẫn giao cho bạn.
- Việc xử lý hoàn tất trên chính cỗ máy này, bản thân tệp không cần giao cho nơi khác; bản Mac và bản iPhone không chung một giao diện, và chúng tôi không giả vờ là có.
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