Video Flash (.flv)
Adobe Tiêu chuẩnFlash Video (FLV) là một định dạng vùng chứa do Macromedia và Adobe phát triển để cung cấp video và âm thanh đồng bộ qua web thông qua plugin trình duyệt Adobe Flash Player.
Kiểm tra & Siêu dữ liệu
Các hệ điều hành và trình phân tích tệp nhận dạng tệp FLV bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:
Chữ ký ở đầu tệp (mẫu byte nhận diện)
Các hệ điều hành và trình phân tích tệp nhận dạng tệp FLV bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:
CHỮ KÝ HEX (OFFSET 0):
46 4C 56 01BIỂU DIỄN ASCII: FLV
Tiêu chuẩn hóa: Adobe Systems Flash Video File Format Specification
Thông số kỹ thuật
| Kiến trúc Container | Vùng chứa truyền phát dựa trên thẻ, gồm các thẻ dữ liệu âm thanh, video và tập lệnh được xen kẽ |
| Nén | Video Sorenson Spark, VP6 hoặc H.264 với âm thanh MP3 hoặc AAC |
| Thứ tự byte | Thứ tự bit và byte lớn (big-endian) |
| Không gian màu | YUV 4:2:0 |
| Kênh & Cấu trúc | Âm thanh mono và stereo cùng luồng video |
| Kích thước tối đa | Thông thường tối đa 1080p |
| Độ trong suốt | Hỗ trợ độ trong suốt của kênh alpha trong luồng video VP6 |
| Truyền phát & Tăng dần | Hỗ trợ nguyên bản truyền phát trực tiếp RTMP (Real-Time Messaging Protocol) |
Ma trận so sánh kỹ thuật: FLV so với các đối thủ
| Thuộc tính kỹ thuật | FLV (Hiện tại) | MP4 | WEBM | MKV |
|---|---|---|---|---|
| Hỗ trợ trình duyệt hiện nay | 0% (Đã bị loại bỏ hoàn toàn khỏi tất cả các trình duyệt hiện đại) | Được hỗ trợ trên mọi trình duyệt (100%) | Hỗ trợ trình duyệt hiện đại 100% | Yêu cầu trình phát đa phương tiện trên máy tính để bàn |
| Tiêu chuẩn hóa | Đặc tả độc quyền của Adobe | Tiêu chuẩn mở quốc tế ISO/IEC | Tiêu chuẩn mở W3C / WebM | Tiêu chuẩn Matroska mã nguồn mở |
| Phát lại trên thiết bị di động | Không được hỗ trợ sẵn trên iOS và Android hiện đại | Được phần cứng hỗ trợ sẵn | Được phần cứng hỗ trợ sẵn | Được hỗ trợ qua VLC/ứng dụng của bên thứ ba |
| Độ trong suốt alpha | Được hỗ trợ qua codec On2 VP6 | Hạn chế (yêu cầu canvas hoặc WebCodecs) | Hỗ trợ kênh alpha gốc (VP9) | Được hỗ trợ trong luồng VP9/ProRes |
Các dạng hỏng thường gặp và hướng dẫn khôi phục bằng mã hex
Video FLV đã tải xuống hiển thị tổng thời lượng là 'không xác định' và không thể kéo xem.
Nguyên nhân gốc rễ: Thiếu thẻ tập lệnh 'onMetaData' chứa các bảng dấu thời gian khung hình chính và kích thước tệp.
Khắc phục: Bổ sung các bảng khung hình chính còn thiếu bằng 'yamdi' (Yet Another MetaData Injector) hoặc chuyển đổi sang MP4 bằng File2File.app.
Phân tích bảo mật và các đường tấn công nhằm vào bộ phân tích cú pháp
Trình cắm Flash Player từng là một trong những thành phần phần mềm bị khai thác nhiều nhất trong lịch sử điện toán do các lỗi hỏng bộ nhớ trong ActionScript và phân tích cú pháp FLV.
Các véc-tơ tấn công đã biết
- Lỗi sử dụng bộ nhớ sau khi giải phóng và tràn vùng nhớ heap trong công cụ phân tích cú pháp ActionScript 3 FLV (ví dụ: CVE-2015-5122).
- Gói siêu dữ liệu AMF0/AMF3 bị lỗi có thể gây hỏng bộ nhớ trong trình phân tích dễ bị tấn công.
- Tràn bộ đệm trong các quy trình giải nén Sorenson Spark cũ.
Biện pháp phòng thủ tốt nhất: Không bao giờ chạy các plugin Flash Player gốc. Chuyển mã các tệp FLV đã lưu trữ trực tiếp sang MP4 bằng FFmpeg trong môi trường cách ly.
Nguồn gốc lịch sử và các cột mốc
Ưu điểm & Lợi ích chính
- Tiên phong trong lịch sử video trực tuyến phổ biến: cho phép phát lại video trên web mà không cần trình phát trên máy tính để bàn độc lập.
- Hỗ trợ độ trong suốt alpha trong các luồng video bằng cách sử dụng codec On2 VP6.
- Mức tải phụ của gói tin thấp được tối ưu hóa cho việc phát sóng video trực tiếp RTMP có độ trễ thấp.
Hạn chế & Nhược điểm kỹ thuật
- Hoàn toàn lỗi thời và không được hỗ trợ trong tất cả các trình duyệt web hiện đại sau khi Flash Player ngừng hoạt động.
- Yêu cầu mã hóa lại hoặc chuyển đổi vùng chứa sang MP4 để phát lại trên iOS, Android và TV thông minh.
- Thiếu các tính năng vùng chứa hiện đại như âm thanh nhiều luồng và phát trực tuyến tốc độ bit thích ứng phản hồi.
Thông tin kỹ thuật thú vị
- Video đầu tiên từng được tải lên YouTube ('Me at the zoo' vào tháng 4 năm 2005) được mã hóa và phân phối dưới dạng tệp FLV.
- Chuỗi byte nhận dạng của Flash Video '46 4C 56 01' đánh vần ASCII 'FLV' theo sau là phiên bản vùng chứa 1.
- Steve Jobs đã xuất bản bức thư ngỏ nổi tiếng 'Suy nghĩ về Flash' của mình vào năm 2010, điều này đã đẩy nhanh quá trình chuyển dịch của ngành từ FLV sang HTML5 MP4.
Các câu hỏi kỹ thuật thường gặp
Tại sao tôi không thể phát tệp FLV trên máy tính của mình nữa?
Adobe và tất cả các trình duyệt web lớn đã chính thức ngừng hỗ trợ Flash Player vào tháng 12 năm 2020 do các lỗ hổng bảo mật. Để phát tệp FLV ngày nay, hãy sử dụng trình phát đa phương tiện VLC hoặc chuyển đổi chúng sang MP4.
Tôi có thể chuyển đổi FLV sang MP4 mà không bị giảm chất lượng không?
Có thể chuyển các luồng H.264 và AAC tương thích từ FLV sang MP4 mà không mã hóa lại; thời gian tùy thuộc vào tệp và thiết bị.
Video FLV ban đầu sử dụng những codec nào?
Các tệp FLV đời đầu sử dụng Sorenson Spark (một biến thể của H.263) và sau đó là On2 VP6, trước khi Adobe thêm hỗ trợ cho chuẩn H.264 vào năm 2007.