一、视频解码流程

二、函数介绍
1.avformat_network_init
函数作用:
执行网络库的全局初始化。这是可选的,不再推荐。
此函数仅用于解决旧GnuTLS或OpenSSL库的线程安全问题。如果libavformat链接到这些库的较新版本,或者不使用它们,则不需要调用此函数。否则,您需要在启动使用该函数的任何其他线程之前调用该函数。 一旦删除对旧GnuTLS和OpenSSL库的支持,此函数将被弃用,并且此函数没有任何用途。
2.av_dict_set
函数作用:
用于向字典中添加键值对。它可以被用来传递多种数据,例如视频解码参数、音频参数、字幕参数等等。
函数原型:
int av_dict_set(AVDictionary **pm,const char *key, const char *value, int flags);
参数说明:
pm:指向AVDictionary结构的指针,该结构将被填充以包含新的键值对。
key:要添加到字典中的键。
value:与键关联的值。
flags:可选参数,指定如何处理重复的键。0:默认,默认情况下,如果键已经存在,则新值将覆盖旧值。AV_DICT_DONT_OVERWRITE:如果已经存在键名,则不会执行任何操作,避免覆盖。AV_DICT_APPEND:如果关键字已经定义,则将其与新的值合并。
返回值:
返回值为整数类型。如果成功,返回0;否则返回一个负数错误码。
常见用法:
av_dict_set(&options, "rtsp_transport", "tcp", 0); //使用 TCP 方式
av_dict_set(&options, "buffer_size", "1024", 0); // 设置缓冲区大小为1024字节av_dict_set(&options, "max_delay", "200", 0);//设置接收包间隔最大延迟,微秒av_dict_set(&options, "timeout", "5000000", 0); // 设置超时时间为5秒(单位为微秒)
av_dict_set(&options, "stimeout", "3000000", 0);//设置阻塞超时,否则可能在流断开时连接发生阻塞,微秒
3.avformat_open_input
函数作用:
用于打开多媒体文件或流并初始化用于读取数据的结构。这个函数是FFmpeg多媒体处理流程的起点,通常用于设置后续的解码、编码或其他处理步骤。
函数原型:
int avformat_open_input(AVFormatContext **ps,const char *url, AVInputFormat *fmt, AVDictionary **options);
参数说明:
ps:指向AVFormatContext结构的指针,该结构将被填充以包含媒体文件的信息和IO上下文。本函数如果打开媒体成功,会返回一个AVFormatContext的实例。
url:要打开的文件名或流的URL。
fmt:可选参数,指定要尝试探测的特定输入格式。如果为NULL,则自动探测。
options:可选参数,一个字典,包含一些特定的选项。这些选项可以影响解析过程或被用来设置特定格式的私有选项。
返回值:
返回值为整数类型。如果成功,返回0;否则返回一个负数错误码。
4.avformat_find_stream_info
函数作用:
用于获取媒体文件的流信息。它通过解析媒体文件的头部数据来确定每个流的类型、编码格式和其他相关信息。
函数原型:
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);
参数说明:
ic:指向AVFormatContext结构的指针,该结构包含媒体文件的信息和IO上下文。
options:可选参数,一个字典,包含一些特定的选项。这些选项可以影响解析过程或被用来设置特定格式的私有选项。
返回值:
返回值为整数类型。如果成功,返回0;否则返回一个负数错误码。

ffmpeg 解码流程以及函数介绍&spm=1001.2101.3001.5002&articleId=137586835&d=1&t=3&u=db0b6f66205c4121bbcb7900541b90e9)
2万+

被折叠的 条评论
为什么被折叠?



