现在的位置: 首页 > 综合 > 正文

ffmpeg有用的笔记,关于增加新解码方式

2019年03月08日 ⁄ 综合 ⁄ 共 771字 ⁄ 字号 评论关闭

FFmpeg添加codec的步骤:(以wma为例)
1. 在libavcodec/avcodec.h 的CodecID 枚举中添加wma的codec id 比如   
CODEC_ID_WMAV1 2. 在libavcodec/allcodecs.c的avcodec_register_all()函数中添加wma 解码器的注册比如:   

REGISTER_ENCDEC(WMAV1, wmav1); 3. 在libavformat/xxx.c文件中添加对于可包含wma数据的文件格式对于wmav1的识别;(此
处的实现并不唯一,具体可参见ff_codec_wav_tags) 4. 创建wma.c 文件并实现 init, close, decode, flush函数,并定义一个AVCodec 变量,比如:

AVCodec wmav1_decoder = {
    "wmav1",    //name
    AVMEDIA_TYPE_AUDIO,
    CODEC_ID_WMAV1, //codec id
    sizeof(WMACodecContext), //wma 结构体     wma_decode_init,   // init 函数入口     NULL,

    ff_wma_end,  
 
//close 函数入口
    wma_decode_superframe,  // decode 函数入口     .flush=flush,  //flush 函数入口 };
 
针对目前将wma,aac, mp3等定点解码库替换FFmpeg现有的实现,只需要重新实现init,close,decode,flush函数,实现的具体方法与各个定点解码库现有的实现有关,只要保证对传递的AVCodecContext类型的参数做正确的处理即可。

抱歉!评论已关闭.