MP4 hay WebM: bạn nên xuất ra định dạng nào?
Một trang web đòi MP4 mà file của tôi là WebM. Đây là chuyển đổi hay chỉ cần đổi tên?
Câu hỏi này thực ra là hai câu hỏi
MP4 và WebM là các định dạng chứa. Một định dạng chứa giống một hệ thống lưu hồ sơ: nó giữ một hoặc nhiều luồng dữ liệu, ghi lại thời gian của chúng, lưu chỉ mục để trình phát tua được, và mang theo siêu dữ liệu. Nó không nén thứ gì cả. Việc nén do codec đảm nhiệm, và luồng bit đã mã hoá mới là thứ mà định dạng chứa đang chở.
Vậy nên “MP4 hay WebM” là câu hỏi về đóng gói, còn “H.264, VP9 hay AV1” là câu hỏi về nén. Nhầm lẫn hai câu đó chính là lý do người ta mã hoá lại những tệp vốn chỉ cần đóng gói lại, và mất trắng một thế hệ chất lượng.
Thường thì bên trong mỗi loại có gì
| Đặc điểm | MP4 | WebM |
|---|---|---|
| Định dạng nền tảng | ISO base media file format (ISO/IEC 14496-12) | Một profile của Matroska |
| Codec video thường gặp | H.264, HEVC, AV1 | VP8, VP9, AV1 |
| Codec âm thanh thường gặp | AAC, đôi khi AC-3 hoặc FLAC | Opus, Vorbis |
| Tính chất bản quyền | Codec có bằng sáng chế là chuyện thường | Thiết kế quanh các codec miễn phí bản quyền |
| Nơi nó là lựa chọn mặc định an toàn | Điện thoại, trình phát trên máy tính, phần mềm dựng phim, mạng xã hội | Web, nhất là khi đi cùng VP9 hoặc AV1 |
Không danh sách nào trong hai cái đó là quy tắc bắt buộc. Một định dạng chứa phần lớn là trung lập với codec, và cả hai đều chở được AV1. Thứ thay đổi là phần mềm ở đầu bên kia sẵn sàng nhận cái gì.
Mỗi định dạng thực sự phát được ở đâu
MP4 chở H.264 và AAC là thứ gần nhất với một tệp video dùng được ở mọi nơi. Nó phát được trên điện thoại, trên tivi, trong phần mềm dựng phim, trong ứng dụng nhắn tin, và nó là thứ mà các biểu mẫu tải lên thường ngụ ý khi ghi “video”. Chính vì nó thống trị mà bộ giải mã phần cứng cho H.264 gần như có mặt trong mọi thiết bị xuất xưởng suốt mười lăm năm qua, điều này quan trọng cho thời lượng pin không kém gì cho khả năng tương thích.
WebM được dựng cho web, với những codec không kèm nghĩa vụ bản quyền khi phát trực tuyến. Trình duyệt xử lý nó rất tốt. Phần mềm ngoài trình duyệt thì kém tin cậy hơn: một số công cụ dựng phim, một số tivi và một số thư viện ảnh trên điện thoại sẽ không mở được nó, còn một đồng nghiệp nhấp đúp vào tệp có thể chẳng thấy gì cả.
Remux so với mã hoá lại
Nếu codec bên trong tệp của bạn vốn đã được nơi nhận chấp nhận thì đổi định dạng chứa chỉ là một lần remux: các khung hình đã mã hoá được chép sang nguyên vẹn và chỉ phần đóng gói được ghi lại. Nó nhanh, nó không mất dữ liệu, và hình ảnh giống hệt đến từng bit. Nếu codec không được chấp nhận — đưa VP9 vào một tệp MP4 cho một trình phát chỉ đọc được H.264 — thì các khung hình buộc phải được giải mã rồi mã hoá lại, việc này tốn thời gian thật và mất một thế hệ chất lượng.
Đó là lý do câu hỏi đầu tiên đáng hỏi là “bên trong có codec gì”, chứ không phải “nó mang phần mở rộng nào”. Các công cụ video của FileSlimmer soi các luồng dữ liệu trước, và remux thay vì mã hoá lại bất cứ khi nào nơi nhận cho phép.
Đừng quên luồng âm thanh
Đổi định dạng chứa mà bỏ qua âm thanh sẽ cho ra một tệp câm lặng trên trình phát không phù hợp. MP4 theo thông lệ chở AAC; WebM theo thông lệ chở Opus hoặc Vorbis. Đưa Opus vào một tệp MP4 là hợp lệ theo đặc tả nhưng lại không được vô số phần mềm ngoài đời hỗ trợ, nên một cuộc chuyển đổi trung thực sang MP4 thường đồng nghĩa với việc mã hoá cả phần âm thanh sang AAC.
Nếu một đoạn phim hoàn toàn không có âm thanh, hãy nói rõ điều đó trong bất cứ bản xuất nào bạn tạo ra. Một số trình phát bị treo khi chúng chờ một luồng dữ liệu không hề tồn tại.
Một danh sách quyết định ngắn gọn
- Gửi tệp cho một người, một nền tảng hay một biểu mẫu tải lên: MP4 với H.264 và AAC.
- Tự phục vụ tệp từ chính trang của bạn tới các trình duyệt: WebM với VP9, hoặc AV1 trong bất kỳ định dạng chứa nào, kèm một bản MP4 dự phòng nếu khán giả của bạn rộng.
- Sẽ dựng lại về sau: giữ bản gốc chất lượng cao nhất mà bạn có, trong đúng định dạng chứa mà nó đến.
- Chỉ mỗi định dạng chứa là sai còn codec thì vốn đã đúng: hãy remux, đừng mã hoá lại.
- Bạn không chắc bên trong có gì: hãy kiểm tra codec trước khi chọn, vì câu trả lời quyết định việc này tốn của bạn vài giây hay cả tiếng đồng hồ.
Những giới hạn nên biết
Việc mã hoá video trong trình duyệt phụ thuộc vào những gì thiết bị phơi ra. Bộ mã hoá phần cứng gắn với từng định dạng cụ thể: một máy có thể mã hoá H.264 rất nhanh nhưng VP9 rất chậm, hoặc từ chối hẳn một codec. Mức độ hỗ trợ cũng khác nhau giữa các trình duyệt trên cùng một máy, và giữa một trình duyệt với chính trình duyệt đó trên điện thoại. Một cuộc chuyển đổi chạy vài giây trên laptop có thể lâu hơn nhiều trên một chiếc điện thoại vừa làm việc vừa phải xoay xở với nhiệt độ của chính nó.
Việc chọn định dạng chứa không cứu được một tệp nặng vì chính nội dung của nó. Một đoạn phim dài, độ phân giải cao, chuyển động nhiều thì nặng trong bất kỳ định dạng chứa nào. Độ phân giải, bitrate và thời lượng mới quyết định điều đó, và không cách đóng gói lại nào thay đổi được chúng.
Công cụ cho việc này
Nguồn tham khảo
- ISO/IEC 14496-12 — ISO base media file format
- The WebM Project — container guidelines
- ITU-T H.264 — Advanced Video Coding
- MDN — Media container formats and codec support