Định dạng tệp

FLV - Flash Video

FLV là định dạng Flash Video đã gánh vác video trên web trong suốt một thập kỷ. Flash Player đã không còn, nên ngày nay các tệp FLV chỉ còn là tài liệu lưu trữ đang chờ được chuyển đổi.

.flv

FLV là Flash Video, định dạng mà Flash Player của Adobe dùng để phát video trong trình duyệt web. Nó được tạo bởi Macromedia, công ty đứng sau Flash, và được chuyển sang Adobe khi Adobe mua lại Macromedia năm 2005. Trong khoảng một thập kỷ, đây là cách video hoạt động trên mạng: một đoạn video xem trong trình duyệt thời kỳ đó rất có khả năng là FLV. Adobe đã chấm dứt hỗ trợ Flash Player vào ngày cuối cùng của năm 2020 và các trình duyệt cũng loại bỏ nó, nên không còn nội dung FLV nào phát trực tiếp trong trang web nữa. Tuy vậy, các tệp tin không biến mất. Chúng vẫn nằm trong thư mục tải xuống và kho lưu trữ, và vẫn có thể phát bằng các trình phát media trên máy tính.

Cấu trúc của một tệp FLV

FLV có thiết kế đơn giản đáng kể vì nó được xây dựng để truyền trực tuyến thay vì lưu trữ lâu dài. Một header ngắn xác định tệp và cho biết nó chứa âm thanh, video hoặc cả hai. Sau đó, tệp chỉ là một chuỗi thẻ (tag), mỗi thẻ là một gói nhỏ gồm loại, dấu thời gian và phần dữ liệu. Các thẻ âm thanh, video và script được đan xen theo thứ tự thời gian, và trình phát chỉ cần đọc tuần tự. Không có mục lục trung tâm, đó là lý do việc tua trong tệp FLV có thể khá bất tiện.

Bản thân container không nén bất cứ thứ gì. Các tệp FLV đời đầu dùng Sorenson Spark cho video, về sau dùng codec On2 VP6, và khi Flash Player hỗ trợ, dùng video H.264 với âm thanh AAC, tất cả đều là nén mất dữ liệu. Cuối cùng Adobe giới thiệu F4V để thay thế, dựa trên cùng cấu trúc MP4 được dùng phổ biến ở mọi nơi.

Siêu dữ liệu mà một tệp FLV chứa

Gần như toàn bộ metadata của FLV nằm trong một thẻ script duy nhất gần đầu tệp, thường có tên onMetaData. Đây là một danh sách tên và giá trị, được ghi theo định dạng dữ liệu mà Flash dùng để làm việc với script, và trình phát sẽ đọc nó trước khi phát để tự thiết lập. Các mục bạn thường thấy nhất là:

  • thời lượng, chiều rộng và chiều cao, cùng tốc độ khung hình;
  • tốc độ dữ liệu video và tốc độ dữ liệu âm thanh, cùng các mã số định danh cho codec video và âm thanh;
  • tần số lấy mẫu âm thanh, kích thước mẫu, và việc âm thanh có stereo hay không;
  • kích thước tệp và một cờ cho biết tệp có thể được tua đến cuối hay không;
  • danh sách vị trí các keyframe và thời điểm của chúng, chính là thứ giúp việc tua trở nên khả thi;
  • tên của ứng dụng đã ghi hoặc chèn metadata, vì từng có những chương trình riêng chỉ để thêm khối dữ liệu này vào các tệp không có sẵn.

Một số tệp còn chứa thẻ script thứ hai giữ một gói XMP, định dạng văn bản có cấu trúc mà Adobe dùng trên nhiều sản phẩm của mình, và gói này có thể chứa tiêu đề, tên tác giả, mô tả và thông báo bản quyền do người dùng nhập.

Thứ mà FLV hoàn toàn không có khái niệm là metadata của máy ảnh. Không có khối EXIF, không có hãng hay mẫu máy ảnh, không có dữ liệu ống kính hoặc phơi sáng và cũng không có trường GPS. Vị trí chưa từng là thứ mà tệp Flash Video được thiết kế để lưu lại. Dấu vết nguồn gốc duy nhất là tên ứng dụng ghi tệp và những gì một gói XMP chứa.

Cũng có một thiếu sót phổ biến mà bạn nên biết. Thời lượng và kích thước tệp chỉ được ghi sau khi toàn bộ tệp đã hoàn tất, nên bản ghi được bắt lại từ luồng trực tiếp thường thiếu hai giá trị này hoặc bị đặt thành 0. Đó là lý do một số trình phát hiển thị tệp FLV không có thanh thời gian và không cho tua tới: thông tin mà trình phát cần chưa từng được ghi vào.

Làm gì với tệp FLV ngày nay

Hãy coi FLV là một định dạng lưu trữ, không phải định dạng làm việc. Không nên tạo tệp mới với định dạng này nữa, vì nền tảng mà nó phụ thuộc đã không còn.

MP4 là định dạng thay thế trên mọi phương diện: phát được trong trình duyệt và trên điện thoại, tua chính xác và chứa được nhiều metadata hơn. Cách bạn chuyển đổi rất quan trọng. Một tệp FLV đã chứa video H.264 và âm thanh AAC thường có thể được remux trực tiếp sang MP4, chỉ cần ghi lại lớp vỏ mà vẫn giữ nguyên từng bit hình ảnh. Tệp cũ hơn dùng Sorenson Spark hoặc VP6 thì phải mã hóa lại, đồng nghĩa với một lần nén mất dữ liệu thứ hai, nên hãy giữ tệp gốc cùng với bản chuyển nếu nội dung video quan trọng.