FFMPEG关键结构体——AVIOContext

一、:AVIOContext结构体

这个结构体,是FFmpeg中有关io操作的顶层结构体,是avio的核心。FFmpeg支持打开本地文件路径和流媒体协议的URL。

该结构体在libavformat/avio.h中定义

二、重要变量

①(*read_packet):读取音视频数据的函数。
②(*write_packet):写入音视频数据的函数。
③(*read_pause):暂停或恢复网络流媒体协议的播放 。

在这里插入图片描述

三、其他结构体成员解读

    unsigned char *buffer;  // buffer起始地址
    int buffer_size;        // 可以读取或者写入的最大的buffer size
    unsigned char *buf_ptr; // 当前正在读或写操作的buffer地址
    unsigned char *buf_end; // 数据结束的buffer地址,如果读取函数返回的数据小于请求数据,buf_end可能小于buffer + buffer_size
    void *opaque;  // 一个私有指针,传递给read / write / seek / 等函数
    int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); // 读取音视频数据的函数。
    int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); // 写入音视频数据的函数
    int64_t (*seek)(void *opaque, int64_t offset, int whence);
    int64_t pos; // 当前buffer在文件中的位置
    int must_flush; // 如果下一个seek应该刷新,则为true
    int eof_reached; // 如果到达eof(end of file 文件尾),则为true
    int write_flag; // 如果开放写,则为true
    int (*read_pause)(void *opaque, int pause); // 暂停或恢复网络流媒体协议的播放
    int64_t (*read_seek)(void *opaque, int stream_index,
                         int64_t timestamp, int flags); // 快进到指定timestamp
    int seekable; // 如果为0,表示不可seek操作。其它值查看AVIO_SEEKABLE_XXX
    int64_t maxsize; // max filesize,用于限制分配空间大小
    int direct; // avio_seek是否直接调用底层的seek功能。
    int64_t bytes_read; // 字节读取统计数据
    int seek_count; // seek计数
    int writeout_count; // 写入次数统计
    int orig_buffer_size; // 原始buffer大小
    const char *protocol_whitelist; // 允许协议白名单,以','分隔
    const char *protocol_blacklist; // 不允许的协议黑名单,以','分隔
		// 用于替换write_packet的回调函数。
    int (
AVFilter是FFmpeg中的一个重要结构体,它代表着一个filter(过滤器),可以用于视频和音频处理。 AVFilter结构体定义在libavfilter/avfilter.h文件中,其主要成员变量包括: 1. char *name:过滤器名称,用于在命令行或脚本中标识该过滤器。 2. char *description:过滤器描述,用于在命令行或脚本中给出该过滤器的作用和功能。 3. AVFilterPad *inputs:输入端口,指向一个AVFilterPad结构体数组,代表着该过滤器的输入端口。 4. AVFilterPad *outputs:输出端口,指向一个AVFilterPad结构体数组,代表着该过滤器的输出端口。 5. AVFilterInitFunc *init:初始化函数,该函数会在过滤器被创建时调用,用于初始化过滤器的参数和状态。 6. AVFilterUninitFunc *uninit:反初始化函数,该函数会在过滤器被销毁时调用,用于清理过滤器的资源和状态。 7. AVFilterFilterFunc *filter:过滤函数,该函数会在过滤器被应用时调用,用于实现过滤器的具体功能。 8. AVFilterQueryFormatsFunc *query_formats:查询格式函数,该函数会在过滤器被创建时调用,用于查询输入输出格式,并将其保存在inputs和outputs中。 9. AVFilterFormats *formats:格式列表,代表着该过滤器支持的输入输出格式列表。 10. void *priv:私有数据,用于保存过滤器的内部状态和数据。 总之,AVFilter结构体FFmpeg中非常重要的一个结构体,它代表着一个filter(过滤器),可以用于视频和音频处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值