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

文章目录

  • avformat_open_input
  • avformat_close_input
  • avformat_find_stream_info
  • avformat_alloc_output_context2

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则表示成功,否则表示失败。

你可能感兴趣的:(直播,直播,ffmpeg,函数)