FFmpeg 基本API avformat_open_input函数内部调用流程分析
1、avformat_open_input 函数定义说明
avformat_open_input 是 FFmpeg 库中的一个函数,用于打开一个输入 URL,并创建一个 AVFormatContext 结构体的指针。在使用 FFmpeg 进行音视频处理时,通常需要先调用这个函数来创建一个 AVFormatContext 对象。
函数原型如下:
int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options);
参数说明:
- AVFormatContext** 指向 AVFormatContext 对象指针的地址。函数会分配或初始化此上下文。
- const char* url媒体文件的路径或URL。可以是本地文件,也支持网络流(如rtmp://, http://)。
- AVInputFormat* fmt强制指定输入文件的封装格式。通常传 NULL,让FFmpeg自动探测格式。
- AVDictionary** options一个字典,用于传递特定于格式或设备的额外选项。可以为 NULL。
2、avformat_open_input详细创建过程说明
详细过程已经在 FFmpeg 播放播放 HTTP网络流读取数据过程分析 详细说明具体创建过程。
3、avformat_open_input调用流程说明
4、avformat_open_input使用实例
#include <libavformat/avformat.h>int main() {AVFormatContext *formatCtx = NULL;const char *filename = "test.mp4";// 打开输入文件int ret = avformat_open_input(&formatCtx, filename, NULL, NULL);if (ret < 0) {char errbuf[128];av_strerror(ret, errbuf, sizeof(errbuf));fprintf(stderr, "无法打开输入文件 '%s': %s\n", filename, errbuf);return -1;}/****** 其他操作 *****/// 关闭并释放资源avformat_close_input(&formatCtx);return 0;
}