Описание тега libavformat

Libavformat (lavf) - это библиотека для работы с различными форматами медиа-контейнеров.

Подробное описание

Libavformat (lavf) - это библиотека для работы с различными форматами медиа-контейнеров.

Его основные две цели - это демультиплексирование, то есть разделение медиа-файла на потоки компонентов, и обратный процесс мультиплексирования - запись предоставленных данных в указанном формате контейнера. Он также имеет модуль ввода-вывода, который поддерживает ряд протоколов для доступа к данным (например, файл, tcp, http и другие). Перед использованием lavf нужно позвонитьav_register_all()для регистрации всех скомпилированных мультиплексоров, демультиплексоров и протоколов. Если вы не уверены, что не будете использовать сетевые возможности libavformat, вам также следует вызватьavformat_network_init().

Поддерживаемый формат ввода описывается AVInputFormat struct, наоборот, выходной формат описывается AVOutputFormat. Вы можете перебирать все зарегистрированные форматы ввода / вывода, используяav_iformat_next() / av_oformat_next()функции. Уровень протоколов не является частью общедоступного API, поэтому вы можете получить имена поддерживаемых протоколов только сavio_enum_protocols() функция.

Основная структура lavf, используемая как для мультиплексирования, так и для демультиплексирования: AVFormatContext, который экспортирует всю информацию о читаемом или записываемом файле. Как и большинство структур Libav, его размер не является частью общедоступного ABI, поэтому он не может быть размещен в стеке или напрямую с помощьюav_malloc(). Чтобы создатьAVFormatContext, используйте avformat_alloc_context() (некоторые функции, например avformat_open_input() может сделать это за вас).

Самое главное, что AVFormatContext содержит:

  • формат ввода или вывода. Он либо определяется автоматически, либо задается пользователем для ввода; всегда устанавливается пользователем для вывода.
  • массив AVStreams, которые описывают все элементарные потоки, хранящиеся в файле. AVStreams обычно упоминаются с использованием их индекса в этом массиве.
  • контекст ввода-вывода. Он либо открывается lavf, либо устанавливается пользователем для ввода, всегда устанавливается пользователем для вывода (если вы не имеете дело сAVFMT_NOFILE формат).

Источник и дополнительная информация, документация, API и ссылки на учебные пособия: http://libav.org/http://libav.org/doxygen/master/group__libavf.html