1 av_bsf_receive_packet
作用:获取过滤后的数据。
函数原型:
int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt);
ctx:初始化后的AVBSFContext;
pkt:用于填充过滤后数据的AVPacket,AVPacket必须是新分配的;
返回值:0表示成功;AVERROR(EAGAIN)表示需要多次调用,因为一个输入packet可能获得多个输出packet,多个输入packet也可能导致一个输出packet;AVERROR_EOF表示到达了数据流的末尾或者文件的末尾,不再有来自过滤器的输出;其他负值表示失败。
2 av_interleaved_write_frame
作用:交错的将音视频帧写入文件。
函数原型:
int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt);
s:输出AVFormatContext;
pkt:输出AVPacket;
返回值:负值表示失败。
注意:和av_write_frame的区别是是否需要交错写入,av_write_frame不会交错写入。
3 av_packet_free
作用:引用计数减1,释放AVPacket的内存。
函数原型:
void av_packet_free(AVPacket **pkt);
pkt:待释放的AVPacket;
注意:和av_free_packet功能类似,但av_free_packet在较新版本中已经被弃用。
4 av_packet_unref
作用:取消对缓冲区的引用,AVPacket其余字段置为默认值。
函数原型:
void av_packet_unref(AVPacket *pkt);
pkt:待取消引用的AVPacket;
注意:即使是局部的AVPacket对象也需要调用该函数。
5 av_write_trailer
作用:将数据流文件尾写入到文件中,并释放文件私有数据,在avformat_write_header调用成功后才可以调用。
函数原型:
int av_write_trailer(AVFormatContext *s);
s:输出AVFormatContext;
返回值:0表示成功。
6 avformat_close_input
作用:释放AVFormatContext。
函数原型:
void avformat_close_input(AVFormatContext **s);
s:要关闭的AVFormatContext;
注意:和avformat_open_input配对使用。
7 avio_close
作用:关闭AVIOContext。
函数原型:
int avio_close(AVIOContext *s);
s:要关闭的AVIOContext;
返回值:负值表示失败。
注意:和avio_open或者avio_open2配对使用。需要注意的是,调用前需要判断该上下文是否依赖文件的输入或输出。ofmt_ctx->oformat->flags & AVFMT_NOFILE为0表示依赖,即需要调用此函数。
//ofmt_ctx: AVFormatContext, oformat是AVOutputFormat
ofmt_ctx->oformat->flags & AVFMT_NOFILE;
8 avio_closep
作用:关闭AVIOContext。
函数原型:
int avio_closep(AVIOContext **s);
s:要关闭的AVIOContext;
返回值:负值表示失败。
注意:与avio_close的区别是会将指向AVIOContext的指针置为NULL。
9 avformat_free_context
作用:释放AVFormatContext以及所有的流。
函数原型:
void avformat_free_context(AVFormatContext *s);
s:要释放的AVFormatContext;
10 av_compare_ts
作用:比较两个以不同时间基表示的时间戳,一般用于将音视频封装于封装格式中进行时间戳比较,以决定先写入哪个帧。
函数原型:
int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b);
ts_a:以时间基tb_a表示的时间戳;
tb_a:时间基;
ts_b:以时间基tb_b表示的时间戳;
tb_b:时间戳;
返回值:-1表示时间戳ts_a早于ts_b,0表示两个时间戳相等,1表示时间戳ts_a滞后于ts_b。
11 av_q2d
作用:将AVRational类型的分数转换为double类型,转换前后仍然基于同一时间基。
函数原型:
static inline double av_q2d(AVRational a);
a:AVRational类型的分数;
返回值:转换后的double类型数值。
12 avcodec_find_decoder
作用:根据解码器ID查找解码器。
函数原型:
const AVCodec *avcodec_find_decoder(AVCodecID id);
id:解码器ID;
返回值:找到的解码器,没找到返回NULL。
13 avcodec_find_encoder
作用:根据编码器ID查找编码器。
函数原型:
const AVCodec *avcodec_find_encoder(AVCodecID id);
id:编码器ID;
返回值:找到的编码器,没找到返回NULL。
14 av_get_channel_layout_nb_channels
作用:根据声道布局获取声道数目。
函数原型:
int av_get_channel_layout_nb_channels(uint64_t channel_layout);
channel_layout:声道布局;
返回值:声道数目。
注意:声道布局描述的是声道的分布和排列方式,它决定了声道数和声道之间的位置关系。例如:单声道、立体声道等等。
15 avfilter_inout_alloc
作用:分配AVFilterInOut。
函数原型:
AVFilterInOut *avfilter_inout_alloc();
返回值:成功返回分配的AVFilterInOut,失败返回NULL。
注意:用完后必须使用avfilter_inout_free释放。
16 avfilter_inout_free
作用:释放分配的AVFilterInOut。
函数原型:
void avfilter_inout_free(AVFilterInOut **inout);
inout:待释放的AVFilterInOut;
17 avfilter_graph_alloc
作用:分配AVFilterGraph。
函数原型:
AVFilterGraph *avfilter_graph_alloc();
返回值:成功返回分配的AVFilterGraph,失败返回NULL。
注意:用完后必须使用avfilter_graph_free释放。
18 avfilter_graph_free
作用:释放分配的AVFilterGraph。
函数原型:
void avfilter_graph_free(AVFilterGraph **graph);
graph:待释放的AVFilterGraph;
19 avfilter_get_by_name
作用:根据名称获取滤镜。
函数原型:
const AVFilter *avfilter_get_by_name(const char *name);
name:滤镜名称;
返回值:成功返回找到的滤镜,失败返回NULL。
20 avfilter_graph_create_filter
作用:创建一个滤镜实例AVFilterContext,并将其添加到现有的滤镜图中。
函数原型:
int avfilter_graph_create_filter(AVFilterContext **filt_ctx, const AVFilter *filt, const char *name, const char *args, void *opaque, AVFilterGraph *graph_ctx);
filt_ctx:带创建的滤镜实例;
filt:滤镜;
name:被创建的滤镜实例的名称;
args:用于初始化滤镜实例的参数;
opaque:忽略,为NULL;
graph_ctx:已有的滤镜图;
返回值:< 0表示失败。