函数介绍
av_register_all
已被弃用,在高版本中可以不使用。
首先检测是不是调用过了,如果调用了,那么直接返回。 初始化所有的封装和解封装器(或称为复用器和解复用器),比如flv mp4 mp3
mov,但是在这个函数源码开始的时候会先调用avcodec_register_all(…)来注册所有的编码和解码器。那么什么是注册呢,就是把av_register_all中代码提到的也就是ffmpeg支持的所有封装格式加入到链表中去,等后面需要的时候再去这个链表中查找使用
avcodec_register_all
首先检测是否已经注册,如果注册,则返回。
初始化所有的编解码器,如h264,h265等,解码和编码器也维护一个链表用于存储所有支持的编解码器。
avformat_network_init
初始化所有的网络库,比如rtmp,rtsp等。
avformat_open_input
所属库:libavformat(**lavf**)
头文件:libavformat/avformat.h
声明:
功能:打开音视频资源(不翻译成流是为了与AVStream概念区分),并读取文件头,获取必要的信息。注意解码器并未打开,并未对音视频包进行解码。
参数ps:该参数可空,为空时,本函数内部将创建AVFormatContext。在需要使用自定义的I/O层回调函数方法时,那就必须要在该函数外部创建AVFormatContext,并创建AVIOContext并赋值给AVFormatContext.pb成员。
参数url:音视频资源的url
参数fmt:如果不为空,则表示强制指定了输入文件的文件格式,不再进行文件格式的探测,如果为空,则本函数内部将对输入文件参数进行自动的探测。ffmpeg工具命令行中的-f选项用以指定该输入格式。
_参数options_:该选项信息将被应用到AVFormatContext的成员字段,以及解封装器(AVInputFormat)的私有字段上去。
avformat_find_stream_Info
所属库:libavformat(lavf)
头文件:avformat.h
声明: 从如下声明的解释可以获知以下几点信息
1)该函数将读取媒体文件的音视频包去获取流信息。本函数常用于avformat_open_input()函数之后,在avformat_open_input()函数中会调用输入文件格式的read_header()函数,比如flv格式的flv_read_header()函数来读取文件头,由于flv格式的头很简单,只能知道是否存在音频流和视频流,获取不到流的编码信息,因此,对于flv格式来说,本函数就非常重要,本函数会读取flv文件中的音视频包,从这些包中获知流的编解码信息。对于没有文件头的MPEG格式来说存在同样的情况。
2)本函数还会在MPEG的重复帧模式下计算真实的帧率。
3)本函数不会改变文件的逻辑位置(即程序访问文件时的文件偏移offset),那些读取并用来做检测的数据包将被缓冲,并留作后续处理使用。
4) 本函数的入参AVDictionary **options如果不为空,那么该入参是一个AVDictionary列表,第几个AVDictionary就作用于AVFormatContext.nb_streams的第几个流,如果在对应的流中找不到相应的选项,函数返回时,那么该入参中还会保留着没有找到的选项
5)本函数不会保证打开所有的编解码器,因此,在函数返回时,选项非空是正常行为。
6)本函数通过options来让用户决定哪些信息是需要的,因此,不浪费时间在获取一些用户根本需要的信息。