老师,您好,我用的ubuntu18.04系统。
执行到avcodec_send_frame函数的时候,发生了如下错误:
段错误 (核心已转储)
确定代码没有错误(按照你课程中的),也没有数组越界和栈溢出。
但是莫名奇妙的出现了这个错误,在网上也找不到相应的解决办法,花费了几个小时的时间也没有解决,还请老师指点一下。
我的代码有和您不一样的地方。如下:
(1)我之前遇到了一个错误是avcodec_open2打开失败,avcodec_open2函数返回值是-22.在网上找了写办法:在创建编码器(avcodec_find_encoder_by_name / avcodec_find_encoder)之前先注册封装格式等信息和注册编码器。具体如下:
av_register_all(); //注册封装格式等信息
avcodec_register_all(); //注册编解码器
而且只能使用avcodec_find_encoder这个函数创建编码器,使用另一个也会出现avcodec_open2函数返回值是-22。
还有一个:我的采样大小必须是AV_SAMPLE_FMT_FLTP才可以,不支持AV_SAMPLE_FMT_S16.
//给编码器设置参数
codec_ctx->sample_fmt = AV_SAMPLE_FMT_FLTP;
上面的三行代码是我与您不一样的地方。
还请老师帮助解决一下。