FFmpeg
模块| 文件
libav格式

I/O 和复用/解复用库。 更多的...

模块

 解复用
 解复用器读取媒体文件并将其分割成数据块(数据包)。数据包含属于单个基本流的一个或多个编码帧。在 lavf API 中,此过程由用于打开文件的avformat_open_input()函数、用于读取单个数据包的av_read_frame()以及最后进行清理的avformat_close_input() 函数来表示。
 
 穆星
 Muxers 以AVPackets形式获取编码数据,并将其写入指定容器格式的文件或其他输出字节流中。
 
 输入/输出读/写
 
 解复用器
 
 输入/输出协议
 
 内部的
 
 
 核心功能
 
 实用功能
 

文件

file  avformat.h
 
file  版本.h
 
file  版本_主要.h
 

详细说明

I/O 和复用/解复用库。

Libavformat (lavf) 是一个用于处理各种媒体容器格式的库。它的主要两个目的是解复用——即将媒体文件分割成组件流,以及复用的逆过程——以指定的容器格式写入提供的数据。它还具有一个I/O 模块,支持多种访问数据的协议(例如文件、tcp、http 等)。除非您绝对确定不会使用 libavformat 的网络功能,否则您还应该调用avformat_network_init()

支持的输入格式由AVInputFormat结构描述,相反,输出格式由AVOutputFormat描述。您可以使用 av_demuxer_iterate / av_muxer_iterate()函数迭代所有输入/输出格式。协议层不是公共 API 的一部分,因此您只能使用avio_enum_protocols()函数获取支持的协议的名称。

用于复用和解复用的主要 lavf 结构是AVFormatContext,它导出有关正在读取或写入的文件的所有信息。与大多数 Libavformat 结构一样,它的大小不是公共 ABI 的一部分,因此不能在堆栈上分配或直接使用av_malloc()分配。要创建AVFormatContext,请使用avformat_alloc_context()(某些函数,如avformat_open_input()可能会为您执行此操作)。

最重要的是AVFormatContext包含:

将选项传递给(解)复用器

可以使用AVOptions机制配置 lavf 复用器和解复用器。通用(与格式无关)libavformat 选项由AVFormatContext提供,可以通过在分配的AVFormatContext(或其来自avformat_get_class ()的AVClass )上调用av_opt_next() / av_opt_find()从用户程序中检查它们。当且仅当相应格式结构的AVInputFormat.priv_class / AVOutputFormat.priv_class为非 NULL 时,AVFormatContext.priv_data才会提供私有(特定于格式)选项。如果AVClass为非 NULL,则I/O 上下文和协议层可以提供更多选项。请参阅AVOptions文档中有关嵌套的讨论,了解如何访问它们。

网址

libavformat 中的 URL 字符串由方案/协议、“:”和方案特定字符串组成。支持不带方案的 URL 以及用于本地文件的“:”,但已弃用。“file:”应用于本地文件。

重要的是,方案字符串不应未经检查就从不受信任的来源获取。

请注意,某些方案/协议非常强大,允许访问本地和远程文件、文件的一部分、文件的串联、本地音频和视频设备等。