avcodec_send_frame函数返回-22
来源:8-8 AAC编码器编码2

6分钟热度的程序猿
2022-09-25
avcodec_send_frame函数返回-22,同时控制台输出
[libfdk_aac @ 0x7fe44aa37a40] frame_size (2048) was not respected for a non-last frame
自己敲的代码以及跑老师的例子,都是这个错误?libfdk_aac已经编译进来了,同时终端用命令ffmpeg -ar 44100 -ac 2 -f s16le -i audio1_Demo.pcm -c:a libfdk_aac out.aac来进行编码是可以的,求解
写回答
3回答
-
小江同学4233265
2023-01-06
我也遇到了这个问题,困惑了好久,现在解决了。
你的frame的nb_samples必须等于codec_context的frame_size。
这里因为我们用的是aac,aac这个codec不支持可变输入大小,所以这个frame_size=2048。
然后解决方法就是你提到的那个凑满一个frame再往里面送。
我这里的swr_convert出来的buffer只有1024bytes,但是我的frame有4096bytes,所以我就每四轮才执行一次avcodec_send_frame()。
052023-12-11 -
快乐的兰那罗
2022-09-26
我也遇到了相同的报错,确认已授权,并且关闭沙盒
00 -
李超
2022-09-25
参数传的不对,看下我上传的例子程序
092022-10-15
相似问题