Bên trong một file .RSV
Phần kỹ thuật cho ai muốn hiểu sâu: .RSV chứa gì, sắp xếp thế nào, khác một file MP4 hoàn chỉnh ở đâu, và vì sao thiếu một mẩu nhỏ lại làm hỏng cả file to.
Bài này dành cho ai muốn hiểu sâu. Không cần đọc để dùng công cụ.
Một file MP4 hoàn chỉnh gồm gì?
Một file video xem được có hai phần:
| Phần | Nội dung | Cỡ |
|---|---|---|
| Phần ruột | Khung hình đã nén, mẫu âm thanh | Gần như toàn bộ dung lượng file |
| Phần mục lục | Khai báo kỹ thuật, bảng vị trí từng khung hình, bảng thời điểm, bảng khung khoá | Vài trăm KB tới vài MB |
Trình phát luôn đọc phần mục lục trước, để biết đường nhảy tới từng khung hình. Không có nó thì không phát được một giây nào, dù phần ruột còn đủ.
File .RSV thiếu đúng phần mục lục
Máy quay viết phần ruột trong lúc quay, nhưng chỉ viết phần mục lục sau khi ngắt REC. Mất nguồn giữa chừng thì phần ruột có đủ, phần mục lục không có.
⟹ Đó là toàn bộ vấn đề: mất một mẩu vài trăm KB, hỏng nguyên file 50GB.
Ruột file .RSV sắp xếp thế nào?
Đây là chỗ .RSV khác một file MP4 thông thường.
MP4 thường: hình và tiếng xen kẽ nhau.
[mục lục][ hình₀ tiếng₀ hình₁ tiếng₁ hình₂ tiếng₂ ... ]
RSV: gom theo từng khối liền mạch.
[ khối 0 ][ khối 1 ][ khối 2 ] ... [ khối N ][ phần dở dang ]
Mỗi khối chứa ba phần, nằm liền nhau theo đúng thứ tự:
| Thứ tự | Phần | Nội dung |
|---|---|---|
| 1 | Siêu dữ liệu theo thời gian | Timecode, thông số máy lúc quay, cài đặt |
| 2 | Hình | Một chùm khung hình đã nén |
| 3 | Tiếng | Âm thanh PCM tương ứng đúng chùm khung hình đó |
Một khối tương ứng một chùm khung hình khép kín (GOP), tức một nhóm khung hình giải nén được mà không cần nhìn ra ngoài nhóm.
Vài con số thực tế
Đo trên các ca đã chạy qua:
| Hạng mục | Giá trị thường gặp | Khoảng đã gặp |
|---|---|---|
| Số khung hình mỗi khối | 12 | 12 tới 48 |
| Dung lượng mỗi khối | Khoảng 6 MB | 6 tới 27 MB |
| Độ phân giải | 3840 × 2160 | |
| Tốc độ khung hình | 25 fps | 23,98 · 25 · 50 fps |
| Tốc độ dữ liệu | Khoảng 100 Mbps | 100 tới 250 Mbps |
| Chuẩn nén hình | H.264/AVC | H.264 hoặc H.265/HEVC |
| Âm thanh | PCM 48 kHz, 2 kênh 16-bit | Có loại 4 track rời 24-bit |
Một file 50GB rơi vào khoảng tám nghìn rưỡi khối.
Vậy cứu file là làm gì?
Ba việc, theo thứ tự:
1. Đọc phần ruột, tìm ranh giới. Đi từ đầu file, nhận ra chỗ nào là siêu dữ liệu, chỗ nào bắt đầu một khung hình mới, chỗ nào là âm thanh. Từ đó lập ra bản đồ: khung hình thứ n nằm ở byte nào, dài bao nhiêu.
2. Lấy lại phần khai báo kỹ thuật.
Phần này file .RSV không có, nên phải lấy từ một clip quay đúng của cùng dòng máy. Đây chính là vai trò của file tham chiếu.
3. Dựng lại phần mục lục và ghi ra file mới. Có bản đồ, có khai báo kỹ thuật, thì dựng lại được đủ các bảng mà một file MP4 cần.
🔑 Điểm quan trọng: không có bước nào đoán mò. Dữ liệu nằm sẵn đó và còn nguyên. Việc phải làm chỉ là lập lại bản đồ. Đó là lý do file cứu ra thường nguyên vẹn, chứ không phải vớt vát được đoạn nào hay đoạn đó.
Vì sao phần đuôi hay bị cụt?
Khối cuối cùng trong file gần như luôn dở dang, vì máy bị cắt điện đúng lúc đang ghi nó.
Phần dở dang đó không đủ để dựng thành khung hình hoàn chỉnh, nên bị bỏ. Thường chỉ mất dưới một giây hình.
Máy nào sinh ra định dạng này?
Dòng máy Sony quay video: FX3, FX30, A7S III và các dòng cùng họ. Dòng chuyên nghiệp hơn (FS7, FS6, VENICE) cũng dùng cơ chế tương tự.
Máy hãng khác có file dở dang riêng, cấu trúc khác. Ví dụ Panasonic Lumix sinh ra file .mdt, không xử lý bằng đường này được.
Bình luận (0)
Chưa có bình luận nào. Bạn mở lời nhé.

