Формат файла

FLV - Flash Video

FLV - это формат Flash Video, который обеспечивал работу веб-видео в течение десятилетия. Flash Player больше не существует, поэтому сегодня файлы FLV являются архивным материалом, ожидающим конвертации.

.flv

FLV - это Flash Video, формат, который Flash Player от Adobe использовал для показа видео в веб-браузере. Его создала компания Macromedia, разработчик Flash, а затем он перешел к Adobe, когда Adobe купила Macromedia в 2005 году. На протяжении примерно десятилетия это был основной способ доставки видео онлайн: ролик, просмотренный в браузере в тот период, с большой вероятностью был в формате FLV. Adobe прекратила поддержку Flash Player в последний день 2020 года, а браузеры убрали его, поэтому FLV больше не воспроизводится на веб-страницах. Однако файлы никуда не делись. Они лежат в папках загрузок и архивах и по-прежнему воспроизводятся в настольных медиаплеерах.

Как устроен файл FLV

У FLV очень простой дизайн, так как его разрабатывали для потоковой передачи, а не для хранения. Короткий заголовок определяет файл и указывает, содержит ли он аудио, видео или и то и другое. Далее файл представляет собой цепочку тегов, каждый из которых - небольшой пакет с типом, временной меткой и полезной нагрузкой. Аудиотеги, видеотеги и скриптовые теги чередуются в хронологическом порядке, и плеер просто читает их последовательно. Центрального индекса нет, поэтому перемотка в FLV может быть неудобной.

Сам контейнер ничего не сжимает. В ранних файлах FLV для видео использовался Sorenson Spark, в более поздних - кодек On2 VP6, а после того как Flash Player получил такую возможность, - видео H.264 со звуком AAC, все с потерями. В итоге Adobe представила F4V как замену, построенную на той же структуре MP4, которая используется повсеместно.

Какие метаданные содержит файл FLV

Практически все метаданные FLV хранятся в одном скриптовом теге в начале файла, который обычно называется onMetaData. Это список имен и значений, записанный в формате данных, который Flash использовал для взаимодействия со скриптами, и плеер считывал его перед воспроизведением, чтобы настроить себя. Чаще всего встречаются такие записи:

  • длительность, ширина и высота, а также частота кадров;
  • скорость потока видео и аудио, а также числовые идентификаторы видеокодека и аудиокодека;
  • частота дискретизации аудио, разрядность сэмпла и указание, является ли звук стерео;
  • размер файла и флаг, показывающий, можно ли перематывать файл до самого конца;
  • список позиций ключевых кадров и их временных меток, за счет чего перемотка вообще становилась возможной;
  • название приложения, которое записало или внедрило метаданные, поскольку существовали отдельные программы, созданные исключительно для добавления этого блока в файлы, где он отсутствовал.

В некоторых файлах также есть второй скриптовый тег с пакетом XMP - структурированным текстовым форматом, который Adobe использует во всех своих продуктах. В нем могут храниться заголовок, автор, описание и уведомление об авторском праве, введенные пользователем.

Чего совсем нет в FLV, так это метаданных камеры. Нет блока EXIF, нет информации о марке и модели камеры, данных об объективе и экспозиции, а также поля GPS. Местоположение изначально не входило в задачи формата Flash Video. Единственные следы происхождения - это название записывающего приложения и данные в XMP-пакете.

Есть и распространенный пробел, о котором полезно знать. Длительность и размер файла записываются только после того, как известен весь файл, поэтому запись, захваченная из прямого эфира, часто вообще не содержит этих данных или они равны нулю. По этой причине некоторые плееры показывают FLV без таймлайна и не позволяют перематывать вперед: информация, которая нужна плееру, так и не была записана.

Что делать с FLV сегодня

Относитесь к FLV как к архивному формату, а не рабочему. Новые файлы в этом формате создавать не стоит, потому что платформа, ради которой он существовал, больше не поддерживается.

MP4 полностью заменяет его: воспроизводится в браузерах и на телефонах, корректно перематывается и хранит гораздо больше метаданных. Важно, как именно вы конвертируете. FLV, который уже содержит видео H.264 и аудио AAC, обычно можно просто перемультиплексировать в MP4, то есть переписать оболочку, сохранив картинку побитно. Более старый файл с Sorenson Spark или VP6 нужно перекодировать, а это означает еще один цикл сжатия с потерями, поэтому, если кадры важны, сохраняйте исходник рядом с копией.