我是靠谱客的博主 漂亮大树,最近开发中收集的这篇文章主要介绍FFmpeg_avio 内存输入模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

当我们需要发送一些自定义的协议 (并不是一些标准的协议)去解析解码的时候 这个时候就有需要自定义avio_alloc_context()

avio_alloc_context()
这个结构体里面的 
read_packet和write_packet是函数指针,指向⽤户编写的回调函数。
可以自行重新设定  

使用read_packet 做个demo 实验

    AVIOContext *avio_ctx = avio_alloc_context(io_buffer, BUF_SIZE, 0, (void *)in_file,    
                                               read_packet, NULL, NULL);

	AVFormatContext *format_ctx = avformat_alloc_context();
    format_ctx->pb = avio_ctx;
     int ret = avformat_open_input(&format_ctx, NULL, NULL, NULL);
这样就可以把我们自定义的avio read数据方法 保存进上下文中 了


```cpp
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
{
    FILE *in_file = (FILE *)opaque;
    int read_size = fread(buf, 1, buf_size, in_file);
    printf("read_packet read_size:%d, buf_size:%dn", read_size, buf_size);
    if(read_size <=0) {
        return AVERROR_EOF;     // 数据读取完毕
    }
    return read_size;
}


最后

以上就是漂亮大树为你收集整理的FFmpeg_avio 内存输入模式的全部内容,希望文章能够帮你解决FFmpeg_avio 内存输入模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部