当前位置:   article > 正文

FFMPEG 中如何加入自定义的解(编)码器_ffmpeg 自定义解码接口

ffmpeg 自定义解码接口

1,创建自定义的解码器:

#include "decode.h"
#include "codec_internal.h"

typedef struct my_ctx {
    int index;
}my_ctx;

static const AVClass my_class = {
    .class_name = "my decoder",
    .item_name = av_default_item_name,
    .version = LIBAVUTIL_VERSION_INT,
};

static av_cold int my_decoder_init(AVCodecContext *avctx)
{
    return 0;
}

static int my_decoder_frame(AVCodecContext *avctx,void *data,int *got_frame_ptr,AVPacket *avpkt)
{
    return 0;
}

static av_cold int my_close(AVCodecContext *avctx)
{
    return 0;
}

const FFCodec ff_my_decoder = {
    .p.name ="mydecoder",
    CODEC_LONG_NAME("my decoder"),
    .p.type=AVMEDIA_TYPE_AUDIO,
    .priv_data_size=sizeof(my_ctx),
    .p.id=AV_CODEC_ID_MY,
    .init=my_decoder_init,
     .cb.decode = my_decoder_frame,
    .close =my_close,
    .p.capabilities=AV_CODEC_CAP_DR1,
    .p.priv_class=&my_class,
};
2,在codec_id.h 中 添加 AVCodecID

    AV_CODEC_ID_MY,

3,codec_desc.c 中添加描述

    {
        .id = AV_CODEC_ID_MY,
        .type = AVMEDIA_TYPE_AUDIO,
        .name = "my",
        .long_name = NULL_IF_CONFIG_SMALL("my decoder"),
        .props = AV_CODEC_PROP_LOSSY,
    },

4, allcodecs.c 中添加注册

extern const FFCodec ff_my_decoder;

5,makefile 中 添加编译 .o文件

OBJS-$(CONFIG_MY_DECODER)            += mycodec.o

6 ./configure --list-decoders 查看是否添加成功

本文适用于 ffmpeg6.1; 由于ffmpeg 近些年更新比较频繁。请根据自己实际情况使用;

感谢以下参考链接:

0, ffmpeg 添加一个新的解码器 - 简书

1,ffmpeg 注册编解码器 - 码农教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/446311
推荐阅读
相关标签
  

闽ICP备14008679号