FFmpeg avio_alloc_context函数剖析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg avio_alloc_context函数剖析相关的知识,希望对你有一定的参考价值。

函数原型
AVIOContext *avio_alloc_context(
                  unsigned char *buffer,
                  int buffer_size,
                  int write_flag,
                  void *opaque,
                  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))
{
    //创建一个AVIOContext结构体
    AVIOContext *s = av_mallocz(sizeof(AVIOContext));
    if (!s)
        return NULL;
    //初始化AVIOContext结构体
    ffio_init_context(s, buffer, buffer_size, write_flag, opaque,
                  read_packet, write_packet, seek);
    return s;
}

#define BUF_SIZE    1024*16
AVIOContext* pAVIOContext = avio_alloc_context(pAVIOContext, BUF_SIZE, 0, this, ReadInputData, NULL, NULL);
ReadInputData函数将赋值给read_packet,当调用avcodec_send_packet函数,将会从ReadInputData读取指定的的BUF_SIZE
来进行分帧解析


疑问
设置FFmpeg读缓存区的大小,应该怎么设置比较合理

以上是关于FFmpeg avio_alloc_context函数剖析的主要内容,如果未能解决你的问题,请参考以下文章

Laravel FFmpeg 错误调用未定义的方法 FFMpeg\FFMpeg::fromDisk()

Android FFMPEG 开发Android 中执行 FFMPEG 指令 ( mobile-ffmpeg 开源项目介绍 | 集成 mobile-ffmpeg 框架 )

FFmpeg使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )

ios下 怎么在代码中调用ffmpeg的命令

C语言下,ffmpeg怎么用?

FFmpeg工具