直播入门(附录二)FFmpeg关键函数一览表

avformat_open_input

  • 函数原型
int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options);
  • 简介
    该函数的会打开一条输入流,并且读取头部(如:FLV文件的头部),但是对应的编解码器(AVCodec)并没有被打开。被打开的输入流,必须使用avformat_close_input函数来关闭
  • 参数
参数说明
AVFormatContext **ps注意类型是指向指针的指针,ps指向的内容为NULL,则会分配一个新的AVFormatContext对象
const char *url需要被打开的输入流地址吗,也可以是本地文件,不特指是URL
AVInputFormat *fmt, AVDictionary **options这两个参数没特殊需求,可以设置为NULL
  • 返回值
    0 表示成功,其他表示失败

avformat_close_input

  • 函数原型
void avformat_close_input(AVFormatContext **s);
  • 简介
    关闭一个被打开的输入流,该函数会释放AVFormatContext对象中的所有内容,如:解码器等
  • 关键参数
参数说明
AVFormatContext **s注意类型是指向指针的指针,该函数成功执行后,会将该参数指向的内容设置为NULL(也就是*s = NULL)

avformat_find_stream_info

  • 函数原型
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);
  • 简介
    该函数会从上下文(AVFormatContext)中读取数据包以获取流信息。 这个对于没有头部的文件格式很有用,例如:MPEG(PS:有头部的如FLV)。 这个函数还可以在MPEG-2重复的情况下计算实际帧率。与此同时,该函数不会修改读取的位置(类似文件的偏移量),被读取的数据包会被加到缓冲区,以便后续处理。
  • 关键参数
参数说明
AVFormatContext *ic上下文指针,将会从这个上下文中读取数据包,前提是这个上下文必须已经被打开了。
AVDictionary **options没有特殊需求,可以置为NULL
  • 返回值
    返回 >= 0 表示成功,其他表示失败。

avformat_alloc_output_context2

  • 函数原型
int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat,
                                   const char *format_name, const char *filename);
  • 简介
    分配一个AVFormatContext 给到输出流,要释放这个对象必须通过调用avformat_free_context函数来释放。avformat_free_context函数会释放AVFormatContext 中的所有内容以及与之相关的所有的FFmpeg框架分配的东西。
  • 关键参数
参数说明
AVFormatContext **ctx注意,类型是指向指针的指针吗,成功则会分配一个上下文对象,失败会被指向NULL
AVOutputFormat *oformats该参数可以设置输出的格式,如果这个参数为NULL,则会从format_namefilename来判断
const char *format_name格式名,指定输出的格式,如:“flv”, ‘mp4’,在oformats为NULL时生效吗,如果该参数也为NULL,则通过filename来判断
const char *filename输出流地址(PS:其实我觉得这里的参数名设置为url更加合适),优先级最低的格式判断方式。
  • 返回值
    返回>= 0则表示成功,否则表示失败。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值