Описание тега libavformat
Подробное описание
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