执行avcodec_send_frame函数出现段错误

来源:8-8 AAC编码器编码2

发如雪jay

2021-11-26

老师,您好,我用的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;

上面的三行代码是我与您不一样的地方。
还请老师帮助解决一下。

写回答

1回答

李超

2021-11-26

Ctx 你初始化了吗?

0
4
音视频与流媒体
回复
发如雪jay
兄弟你的问题解决了吗,我的avcodec_send_frame函数也是返回-22
2022-03-15
共4条回复

音视频小白系统入门课 音视频基础+ffmpeg原理

掌握音视频采集、编解码、RTMP传输协议等核心基础

2318 学习 · 813 问题

查看课程