Какво е FLV файл?
FLV (Flash Video) е контейнерен файлов формат с разширение .flv. FLV се използва за доставяне на аудио/видео съдържание по интернет с помощта на Adobe Flash Player или Adobe Air. Данните във FLV файловете са кодирани по същия начин като SWF файловете. Директната поддръжка беше добавена към Flash Player 7 през 2003 г. Системите на Adobe създадоха F4V през 2007 г. поради ограниченията на FLV.
Кодиране
FLV файловете съдържат видеобитови потоци на Sorenson Spark, които са патентован вариант на видеостандарта H.263. Това е необходимият формат за компресиране за Flash Player 6 и 7. Версия 8 на Flash Player поддържа поддръжка за On2 TrueMotion VP6 видео потоци. Това е препоръчителният формат за компресиране за Flash Player 8 и по-нова версия. FLV поддържа аудио в MP3, Nellymoser Asao Codec и кодека Speex с отворен код. Той също така поддържа некомпресирано аудио или аудио във формат ADPCM. AAC (HE-AAC/AAC SBR, AAC Основен профил и AAC-LC) се поддържат от последните версии на Flash Player 9.
Структура
FLV файловете се състоят от заглавка и пакети. FLV файлът започва със заглавката. Заглавката има следните полета.
- Подпис: Стойността му е FLV
- Версия: Стойността по подразбиране е 1. Само 0x01 е валиден.
- Флагове: 0x04 се използва за аудио и 0x01 се използва за видео, така че 0x05 се използва както за аудио, така и за видео.
- Размер на заглавката: Стойността по подразбиране е 9. Използва се за пропускане на по-нова разширена заглавка.
След заглавието идват пакетите. FLV файлът е разделен на множество пакети, наречени FLV тагове, които имат 15-байтови заглавки. Пакетите съдържат метаданни за аудио, видео, скриптове, информация за криптиране и полезен товар. FLV пакетите имат следните полета.
- Reserved: Запазено е за FMS и трябва да бъде 0.
- Филтър: Показва дали пакетите са филтрирани или не.
- 0: No preprocessing required. This is used for unencrypted files.
- 1: Preprocessing required. This is used for encrypted files
- Тип на пакета: Това определя вида на съдържанието в пакета.
- 8: Audio
- 9: Video
- 18: Script Data
- Размер на данните: Това означава дължината на съобщението.
- Timestamp Lower: Това съхранява клеймото за време в милисекунди, към които се прилагат данните от етикета. Той е настроен на NULL за първия пакет.
- Timestamp Upper: Разширение за създаване на стойност uint32_be.
- ID на поток: Това е зададено на NULL за първия поток.
- Полезни данни: Това са данните, базирани на типа на пакета.