FFMPEG学习【libavformat】:核心函数

来源:互联网 发布:vivian maier 知乎 编辑:程序博客网 时间:2024/06/06 03:50

查询libavformat功能,分配核心结构等函数



一、函数

unsigned avformat_version (void)返回LIBAVFORMAT_VERSION_INT常量。


const char * avformat_configuration (void)返回libavformat构建时配置。


const char * avformat_license (void)返回libavformat许可证。


void av_register_all (void)初始化libavformat并注册所有的muxers,demuxers和protocol。

如果不调用此功能,则可以准确选择要支持的格式。


void av_register_input_format (AVInputFormat *format) 

void av_register_output_format (AVOutputFormat *format)

int avformat_network_init (void)进行网络组件的全局初始化。

这是可选的,但建议,因为它避免了隐含地为每个会话进行设置的开销。

如果在某些主要版本碰撞中使用网络协议,则调用此功能将变得强制。


int avformat_network_deinit (void)撤消由avformat_network_init完成的初始化。


AVInputFormat * av_iformat_next (const AVInputFormat *f)如果f为NULL,则返回第一个注册的输入格式,如果f为非NULL,则在f之后返回下一个注册的输入格式,如果f为最后一个则返回NULL。


AVOutputFormat * av_oformat_next (const AVOutputFormat *f)如果f为NULL,则返回第一个注册的输出格式,如果f为非NULL,则在f之后返回下一个注册的输出格式,如果f为最后一个则返回NULL。


AVFormatContext * avformat_alloc_context (void)分配AVFormatContext。

avformat_free_context()可用于释放上下文以及框架内的所有内容。


void avformat_free_context (AVFormatContext *s)释放AVFormatContext及其所有流。

参数:s:释放上下文


const AVClass * avformat_get_class (void)获取AVCormatContext的AVClass。

它可以与AV_OPT_SEARCH_FAKE_OBJ结合使用来检查选项。


AVStream * avformat_new_stream (AVFormatContext *s, const AVCodec *c)向媒体文件添加新的流。

当分解时,它由read_header()中的解分配器调用。 如果标志AVFMTCTX_NOHEADER在s.ctx_flags中设置,那么也可以在read_packet()中调用它。

当复用时,应由用户调用avformat_write_header()之前。

用户需要调用avcodec_close()和avformat_free_context()才能清除avformat_new_stream()的分配。

参数:s:媒体文件句柄

  c:如果不为空,则将新对应的AVCodecContext初始化为使用此编解码器。 这是需要的。 编解码器特定默认设置,因此如果已知编解码器应该提供。

返回:新创建的流或NULL错误。


int av_stream_add_side_data (AVStream *st, enum AVPacketSideDataType type, uint8_t *data, size_t size)将现有阵列作为流侧数据进行包装。

参数:st:流

  type:侧信息类型

  data:边数据数组。 必须使用av_malloc()函数族分配。 数据的所有权转移到st。

  size:侧信息大小。

返回:成功为零,失败时出现负ERROR代码。 在失败时,流不变,数据仍然由呼叫者拥有。


uint8_t * av_stream_new_side_data (AVStream *stream, enum AVPacketSideDataType type, int size)从流分配新信息。

参数:stream:流

  type:所需侧信息类型

  size:侧信息大小

返回:指向新鲜分配的数据,否则为NULL


uint8_t * av_stream_get_side_data (const AVStream *stream, enum AVPacketSideDataType type, int *size)从流中获取边信息。

参数:stream:流

  type:所需侧信息类型

  size: 用于存储的信息大小的指针(可选)

返回:指向数据的指针,否则为NULL


AVProgram * av_new_program (AVFormatContext *s, int id)