FFmpeg 基本API avformat_open_input函数内部调用流程分析

1、avformat_open_input 函数定义说明

avformat_open_input 是 FFmpeg 库中的一个函数,用于打开一个输入 URL,并创建一个 AVFormatContext 结构体的指针。在使用 FFmpeg 进行音视频处理时,通常需要先调用这个函数来创建一个 AVFormatContext 对象。

函数原型如下:

cpp 复制代码
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使用实例

cpp 复制代码
#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;
}
相关推荐
端平入洛14 小时前
delete又未完全delete
c++
端平入洛2 天前
auto有时不auto
c++
哇哈哈20212 天前
信号量和信号
linux·c++
多恩Stone2 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
REDcker2 天前
WebCodecs VideoDecoder 的 hardwareAcceleration 使用
前端·音视频·实时音视频·直播·webcodecs·videodecoder
gihigo19982 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
蜡笔小马2 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
超级大福宝3 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
weiabc3 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
问好眼3 天前
《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法
c++·算法·位运算·信息学奥赛