FFV1 (сокращение от FF Video 1 [1] ) — это формат внутрикадрового видеокодирования без потерь . FFV1 особенно популярен благодаря своей производительности в отношении скорости и размера по сравнению с другими кодеками сохранения без потерь, такими как M-JPEG2000. [2] [3] [4]
Кодер и декодер являются частью бесплатной библиотеки с открытым исходным кодом libavcodec в проекте FFmpeg с июня 2003 года. [5] FFV1 также включен в ffdshow и LAV Filters , [6] что делает видеокодек доступным для приложений Microsoft Windows , поддерживающих общесистемные кодеки через Video for Windows (VfW) или DirectShow .
FFV1 был стандартизирован в IETF в соответствии с RFC 9043. [7] Европейский вещательный союз (EBU) включает FFV1 под индексом семейства кодеков «31» в своем объединенном списке ссылок на видеокодеки. [8]
Архивация видео
Для долгосрочного сохранения цифрового видео необходимы устойчивые форматы контейнеров , а также аудио/видеокодеки. По состоянию на 2013 год среди архивного сообщества нет единого мнения о том, какой формат файла или кодеки следует использовать для сохранения цифрового видео. [9] Ранее объявленными кодировками были Motion JPEG 2000 (без потерь) [10] и несжатое видео. [11]
FFV1 оказался жизнеспособным архивным кодированием, и Библиотека Конгресса США начала рассматривать его как подходящий вариант для кодирования с сохранением в 2014 году. [2] [12] По сравнению с JPEG 2000 без потерь, FFV1 имеет сопоставимые коэффициенты сжатия и более низкие вычислительные требования. С 2014 года он используется архивами, особенно там, где коллекции не содержат обширных вещательных материалов, а вместо этого состоят из устной истории и тому подобного. [13] [14]
Примерно с 2015 года европейский проект PREFORMA начал работать над стандартизацией FFV1 через Internet Engineering Task Force (IETF) . [15] Он был стандартизирован в августе 2021 года как RFC 9043. [7] Проект PERFORMA также реализовал проверку соответствия для FFV1 в контейнере Matroska . [16] Подробная информация о плане стандартизации FFV1 [17] была подготовлена MediaArea (авторами MediaInfo ) в рамках их инструмента проверки соответствия «Media CONCH». [18]
В области архивации видео интерес к FFV1 растёт, как можно увидеть в теме в списке рассылки AMIA-L [23] , на форуме PrestoCentre [24] или в списке рассылки Archivematica. [25] [26]
Компании также подбирают поддержку FFV1. Например, NOA (ранее «NOA Audio Solutions») объявила о поддержке FFV1 в своей линейке продуктов в июле 2013 года [27] , а KEM-Studiotechnik выпустила киносканер с выходом FFV1 в ноябре 2013 года. [28]
«[...] для видео существует множество вариантов выбора кодеков (способов кодирования/декодирования битов для представления визуальных данных, например, ffv1, H.264, Apple ProRes) [...]»
В январе 2013 года возможное использование и принятие FFV1 в качестве архивного кодека рассматривалось в выпуске журнала AV Insider [30] PrestoCentre : [31]
«FFV1 имеет много полезных технических характеристик [...], но темпы внедрения относительно низкие по сравнению с альтернативами, например, JPEG2000. [...] Но слишком долгое воздержание лишь увековечивает статус FFV1.
Принятие Archivematica и австрийской Mediathek с их активным продвижением FFV1 вместе с другими может начать разрывать этот порочный круг. Это может привести к добродетельному кругу более широкого принятия, к совместной разработке, к включению в коммерческие продукты и множеству других преимуществ для сообщества».
PACKED - «Центр экспертизы цифрового наследия» в Бельгии, в статье о видеоформатах для архивирования пишет: [32]
«Если удалить из этого списка фирменные кодеки, останется лишь несколько. [...] По сути, это оставляет учреждениям, желающим использовать кодек без потерь, только два варианта: Jpeg2000 и FFV1».
meemoo [nl] , Фламандский институт архивов объявил в июне 2020 года, что они начнут крупную операцию по перекодированию и переупаковке своих файлов JPEG2000 в оболочке MXF, полученных в результате проектов оцифровки материалов сектора культурного наследия, в файлы FFV1 в оболочке MKV. В 2019 году они уже объявили, что MKV-FFV1 станет промежуточным форматом их проекта миграции для кассет DV, DVCAM и DVCPRO.
«Österreichische Mediathek» также разработала DVA-Profession — бесплатное программное решение для массовой оцифровки видео, пригодное для архивирования, в основном с использованием FFV1 в качестве видеокодирования на протяжении всего рабочего процесса, без транскодирования. [51] Кроме того, они инициировали разработку «FFV1.3» (=версия 3 FFV1) совместно с Михаэлем Нидермайером ( FFmpeg ), Питером Бубестингером-Штайндлом и Дэйвом Райсом; см. #Versions ниже. [52]
Приложения, поддерживающие FFV1
Ниже приведен список приложений, которые, как известно, могут читать и/или записывать видеофайлы FFV1 как изначально, так и путем установки пакетов кодеков.
Записи, отмеченные знаком «-», означают, что они, как правило, поддерживают только кодирование или декодирование.
Термин «встроенный» означает, что приложение может обрабатывать FFV1 без необходимости установки дополнительных пакетов кодеков. Приложения, которые поставляются с поддержкой FFV1 из коробки , обычно используют библиотеки FFmpeg или Libav для этого.
Список далеко не полный и со временем будет дополняться:
FFV1 не является строго внутрикадровым форматом; несмотря на то, что он не использует межкадровое предсказание, он позволяет контекстной модели адаптироваться к нескольким кадрам. Это может быть полезно для сжатия из-за очень большого размера контекстной таблицы, но может быть отключено, чтобы заставить кодер генерировать строго внутрикадровый битовый поток. Поскольку полученное сжатие, по-видимому, уменьшается [65] с более поздними версиями FFV1 (версии 2,3), использование размера GOP больше "1" может исчезнуть в будущем.
Процесс прогнозирования
При прогрессивном сканировании кадра разница между текущим пикселем и его предсказанным значением, судя по соседним пикселям, отправляется в процесс энтропийного кодирования. Предсказание выполняется следующим образом:
прогноз = Медиана( Верх , Левый , Верх + Левый - Верхний Левый )
Третье значение, Top + Left - TopLeft , фактически эквивалентно применению "верхнего" предиктора к текущему и левому образцу, за которым следует применение левого предиктора к остатку предсказания верхнего предиктора. Этот метод, также известный как градиент, использует как горизонтальную, так и вертикальную избыточность. Таким образом, говоря простыми словами, предсказание является медианой методов верхнего, левого и градиентного предсказания. Для улучшения производительности и простоты края кадра предполагаются равными нулю, чтобы избежать особых случаев. Предсказание при кодировании и декодировании управляется с помощью кольцевого буфера . [66]
Процесс энтропийного кодирования
Остатки кодируются с использованием либо кодирования Голомба-Райса [67] , либо кодирования диапазона . Оба варианта используют очень большую контекстную модель. «Малая» контекстная модель использует (11×11×11+1)/2=666 контекстов на основе соседних значений ( Left − TopLeft ) , (TopLeft-Top) и ( Top − TopRight ) . «Большая» контекстная модель использует (11×11×5×5×5+1)/2=7563 контекстов на основе тех же значений, что и раньше, но также ( TopTop − Top ) и ( LeftLeft − Left ) , где TopTop — это пиксель на два выше текущего по вертикали, а LeftLeft — это пиксель на два левее текущего. При кодировании диапазона каждый «контекст» фактически имеет 32 подконтекста, используемых для различных частей кодирования каждого остатка, что в итоге дает в общей сложности 242 016 контекстов для «большой» модели.
Ранние экспериментальные версии FFV1 использовали арифметический кодер CABAC из H.264, но из-за неопределенной ситуации с патентами/роялти, а также из-за его немного худшей производительности CABAC был заменен на кодирование диапазона. [68]
Статус
16 апреля 2006 года сообщение Майкла Нидермайера подтвердило, что поток битов FFV1 (версия 1) заморожен: [69]
«ffv1 и ffvhuff не менялись уже долгое время, и никто не предложил никаких изменений в течение 1 месяца после моего предупреждения, поэтому они официально больше не являются экспериментальными, и мы гарантируем декодируемость файлов, закодированных с помощью текущих ffv1/ffvhuff в будущем»
Версии
Версия 1 (FFV1.1)
Битовый поток версии 1 заморожен и считается стабильным для использования в производстве с апреля 2006 года. [69]
Замечание «экспериментальный» в исходном коде тогда было проигнорировано и удалено в марте 2010 года. [70]
Версия 2 (FFV1.2)
Версия 2 была промежуточной версией, которая официально не выпускалась и не должна использоваться в производственных целях.
Версия 3 (FFV1.3)
Битовый поток версии 3 заморожен с 3 августа 2013 года. [71] Окончательное подтверждение того, что эта версия официально выпущена для использования в производстве, было 26 августа 2013 года. [52]
FFV1.3 содержит улучшения и новые функции, такие как поддержка многопоточного кодирования/декодирования, устойчивость к ошибкам и проверка целостности с помощью контрольных сумм CRC, сохранение соотношения сторон дисплея (DAR) и порядка полей. Он тестировался более 1 года, [72] и официально выпущен в стабильном виде для производства в августе 2013 года. [52]
В августе 2016 года в эталонный кодек была добавлена поддержка 48 бит/16 бит на канал (=бит на компонент) в RGB . [73] До этого 16 бит на канал в FFV1 поддерживались только в YCbCr , а RGB был ограничен 14 бит на канал.
В 2017 году многопоточного кодировщика VFW FFV1.3 для Windows по-прежнему не существует. FFdshow может кодировать только поток FFV1.1 с помощью одного ядра ЦП.
Версия 4 (FFV1.4)
Улучшения, выходящие за рамки FFV1.3, находятся в стадии разработки и обсуждаются в списке рассылки IETF «CELLAR». [74]
Планируется дополнительная поддержка обработки цвета, особенно нелинейных/логарифмических цветовых пространств .
Проект стандарта размещен на GitHub. [1]
Документация
Текущая официальная документация была начата в апреле 2012 года и оставалась в очень базовом состоянии до 2015 года. [75]
В 2015 году в рамках процесса стандартизации IETF документация была улучшена и пересмотрена рабочей группой CELLAR в тесном сотрудничестве с Михаэлем Нидермайером. [1]
^ аб Бубестингер, Питер. «Сравнение видеокодеков и контейнеров для архивов». Австралийская медиатека . Проверено 8 октября 2014 г.
^ "MSU Lossless Video Codecs Comparison" (PDF) . MSU Graphics & Media Lab (Video Group). Март 2014 . Получено 8 октября 2014 .
^ "Графики производительности FFV1 (транскодирование, извлечение)". NOA GmbH . Получено 8 октября 2014 г. .[ постоянная мертвая ссылка ]
^ "История репозитория исходного кода FFV1 в репозитории FFMPEG". Майкл Нидермайер. Архивировано из оригинала 23 марта 2012 г. Получено 21 октября 2010 г.
^ "Nevcairiel/LAVFilters". 26 июня 2021 г. – через GitHub.
^ ab "Формат кодирования видео FFV1 версий 0, 1 и 3". IETF . Август 2021 г. doi : 10.17487/RFC9043 . RFC 9043.
^ Эвен, Жан-Пьер (15 августа 2016 г.). «Код сжатия видео (комбинированный список видеокодеков, вкл. EBU, DVB и MPEG)». Европейский вещательный союз . Получено 19 сентября 2016 г.
^ ab "Форматы и кодеки для сохранения цифрового видео (Руководство 22)". NSW State Records. Август 2013 г. Архивировано из оригинала 10 ноября 2013 г. Получено 10 ноября 2013 г.
^ "Motion JPEG 2000 at digitalpreservation.gov". Библиотека Конгресса США . 11 января 2012 г. Получено 6 марта 2013 г.
^ Флейшхауэр, Карл; Фрост, Ханна; Бирд, Исайя (ноябрь 2010 г.). "AMIA/IASA 2010 — Оболочки и кодеки: обзор стратегий выбора". AMIA / IASA . Получено 6 октября 2013 г.
^ ab Fleischhauer, Carl; Egan, Courtney (8 сентября 2014 г.). «Цифровые форматы файлов для переформатирования видеокассет». FADGI (Библиотека Конгресса США) . Получено 8 октября 2014 г.
^ «О проекте — Инициатива по разработке руководящих принципов цифровизации федеральных агентств». www.digitizationguidelines.gov .
^ Флейшхауэр, Карл; Мюррей, Кейт (3 декабря 2014 г.). «Сравнение форматов для оцифровки видео». FADGI (Библиотека Конгресса США) . Получено 8 сентября 2015 г.
^ "ФОРМАТЫ Сохранения для информации о культуре/электронных архивов (PREFORMA)" . Получено 24.09.2015 .
^ ab Мюррей, Кейт; Райс, Дэйв; Блюэр, Эшли (23 сентября 2015 г.). «Улучшение технических возможностей аудиовизуальных коллекций с помощью проекта PREFORMA». Библиотека Конгресса США . Получено 24 сентября 2015 г.
^ Фэллон, Тесса; Райс, Дэйв; Блюэр, Эшли (3 марта 2015 г.). Conch – Приложение к упражнениям по стандартизации (PDF) (Отчет). MediaArea . Получено 24.09.2015 .
^ "FFV1 at digitalpreservation.gov". Библиотека Конгресса США . 29 мая 2012 г. Получено 10 ноября 2013 г.
^ Остин, Барбара; Боулинг, Мелисса; Дикайн, Холли; Эванс, Райан (7 августа 2013 г.). "Проект электронных записей" (PDF) . Общество американских архивистов . Получено 21 октября 2014 г.
^ "Формат файла AVI с видеокодированием FFV1". AVI_FFV1 . Цифровое сохранение. LoC . 2012-07-20. fdd000349 . Получено 2015-04-22 .
^ "Формат файла Matroska с видеокодированием FFV1". Matroska_FFV1 . Цифровое сохранение. LoC . 2012-05-29. fdd000343 . Получено 2015-04-22 .
^ "Обсуждение FFV1 в списке рассылки AMIA-L". AMIA . Декабрь 2012 г. Получено 6 марта 2013 г.
^ "Формат цифрового мастер-архива". Форумы PrestoCentre. 26 октября 2012 г. Архивировано из оригинала 15 апреля 2013 г. Получено 6 марта 2013 г.
^ "FFV1 vs. другие форматы для сохранения". Список рассылки Archivematica. 24 сентября 2012 г. Получено 6 марта 2013 г.
^ "Цифровое архивирование фильмов в больших масштабах". Список рассылки Archivematica. 29 января 2013 г. Получено 6 марта 2013 г.
^ "Объявление компании, подтверждающее поддержку FFV1". NOA Audio Solutions. 10 июля 2013 г. Архивировано из оригинала 13 апреля 2016 г. Получено 29 августа 2013 г.
^ ab Kober, Helmfried (14 ноября 2013 г.). "KEM SCAN Film Scanner Data Sheet" (PDF) . KEM-Studiotechnik . Получено 30 апреля 2015 г. .
^ Лайонс, Бертрам (2013). «Спросите эксперта: советы по архивированию семейной истории, часть 3». The New York Times Magazine (онлайн) .
^ "prestocentre.org". Архивировано из оригинала 2016-12-02 . Получено 2013-03-06 .
^ Эддис, Мэтью (2013). «Преодоление пропасти (от результатов исследований к устойчивым инструментам и услугам для AV)». Журнал AV Insider . № 3. PrestoCentre. С. 14–15.
^ Эмануэль Лоррен (март 2014 г.). «Краткое руководство по выбору цифрового формата для видеоархивных мастеров». PACKED, Бельгия . Получено 2 июня 2014 г.
^ "Связь по конференциям для презентаций, Всемирная конференция FIAT/IFTA в Вене, 7–10 октября 2015 г." (PDF) . Международная федерация телевизионных архивов . 13 мая 2015 г. Архивировано из оригинала (PDF) 10 октября 2015 г. . Получено 01 сентября 2015 г.
↑ Левец, Герман (30 августа 2011 г.). «DVA-Profession, используемый в австрийской Медиатеке: Кодек». Остеррейская медиатека. Архивировано из оригинала 14 октября 2014 года . Проверено 8 октября 2014 г.
^ "Архивы города Ванкувер - Домашняя страница". vancouver.ca . Архивировано из оригинала 2005-04-03.
^ "Информация о видеоконтейнере Matroska на сайте digitalpreservation.gov". Библиотека Конгресса США . Получено 10 мая 2012 г.
^ "Запись в блоге Архива города Ванкувер, в которой упоминается использование FFV1". Архив города Ванкувер . Получено 10 мая 2012 г.
^ "Главная". MAC Montréal .
^ "СМИДАК Фильмпродакшн" . Проверено 31 марта 2016 г.
^ "RTVS Slovakia: Complete Video Archive System from NOA". NOA GmbH. 1 сентября 2014 г. Получено 10 мая 2017 г.
^ "Национальная вещательная компания Словении первой успешно внедрила комплексные решения для архива видео от NOA". NOA GmbH. 2014. Получено 10 мая 2017 .
^ «Последовательность изображений в Matroska/FFV1» . AV Сохранение от reto.ch. 11 декабря 2016 года . Проверено 10 мая 2017 г.
^ "Установка в SMC: United Arab Emirates First для NOA". NOA Archive GmbH. Март 2018 г. Получено 15 марта 2017 г.
^ "FF Video Codec 1, Version 0, 1 and 3". www.loc.gov . 2021-11-24 . Получено 2023-01-15 .
^ "Медиа-микросервисы и архивные рабочие процессы на телевидении CUNY". 10 ноября 2015 г. Получено 19 августа 2016 г.
^ Марш, Алекс (2021-03-12). "FFV1: The Gains of Lossless". Bitstreams: Notes from the digital collections team . Duke University Libraries. Архивировано из оригинала 2021-04-06 . Получено 6 апреля 2021 г.
^ Эстева, Мария; Вега, Карла; Хенриксен, Ванди; Ли, Дженнифер; Мартин, Венди (май 2013 г.). «Автоматизированное архивирование содержимого DVD (презентация на TCDL 2013)». Техасский передовой вычислительный центр (TACC) и Техасский университет в Остине — Библиотеки. Архивировано из оригинала 3 июня 2015 г. Получено 21 октября 2014 г.
^ "dva-profession.mediathek.at". Архивировано из оригинала 2012-05-25 . Получено 2012-05-10 .
^ abc Нидермайер, Майкл (26 августа 2013 г.). "Сообщение о фиксации репозитория: FFV1.3 выпущен как стабильный". FFmpeg . Архивировано из оригинала 4 марта 2016 г. Получено 29 августа 2013 г.
^ abcd "ffdshow tryouts" . Получено 27 апреля 2015 г. .
^ abc "LAVFilters (Open-Source DirectShow Media Splitter and Decoders)". Хендрик Леппкес . Получено 27 апреля 2015 г.
^ "Archivematica - Политики форматирования". Artefactual Systems Inc. Получено 2015-04-30 .
^ «Центр поддержки | Blackmagic Design».
^ "Blender v2.6 Manual: Render/Output/Video". Blender Foundation. 18 ноября 2011 г. Получено 4 августа 2013 г.
^ «DVA-Профессия, используемая в австрийской Медиатеке: Кодек» . Остеррейхская Медиатека. Архивировано из оригинала 17 апреля 2016 г. Проверено 31 марта 2016 г.
^ ab "Сообщение о фиксации репозитория: Bitstream FFV1.1 заморожен". Майкл Нидермайер. 14 апреля 2006 г. Архивировано из оригинала 4 марта 2016 г. Получено 8 мая 2012 г.
^ "Сообщение о фиксации репозитория". Майкл Нидермайер. 22 марта 2010 г. Архивировано из оригинала 23 марта 2012 г. Получено 21 октября 2010 г.
^ "Почтовая рассылка: Bitstream FFV1.3 заморожен". Майкл Нидермайер. 3 августа 2013 г. Получено 29 августа 2013 г.
↑ Бубестингер, Питер (6 февраля 2014 г.). «Статистика производительности FFV1». Австралийская медиатека . Проверено 8 октября 2014 г.
^ Нидермайер, Майкл (16 августа 2016 г.). «Сообщение о фиксации репозитория: avcodec/ffv1enc: Добавить поддержку RGB48». FFmpeg . Получено 18 августа 2016 г. .
^ "Тема обсуждения FFV1 версии 4 (в списке рассылки IETF CELLAR)". 2016-01-05 . Получено 2016-08-18 .