请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

avcodec_send_frame函数返回-22

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

3回答

小江同学4233265 2023-01-06 13:48:09

我也遇到了这个问题,困惑了好久,现在解决了。

你的frame的nb_samples必须等于codec_context的frame_size。

这里因为我们用的是aac,aac这个codec不支持可变输入大小,所以这个frame_size=2048。

然后解决方法就是你提到的那个凑满一个frame再往里面送。

我这里的swr_convert出来的buffer只有1024bytes,但是我的frame有4096bytes,所以我就每四轮才执行一次avcodec_send_frame()。

https://img1.sycdn.imooc.com//szimg/63b7b5bd09aea44a06260593.jpg

0 回复 有任何疑惑可以回复我~
  • 太感谢了!
    回复 有任何疑惑可以回复我~ 2023-01-09 23:03:04
  • 老师的课中出现这个问题,为啥不优化一下课程内容
    回复 有任何疑惑可以回复我~ 2023-09-22 22:11:07
  • 李超 #3
    你从哪儿计算出来的数据是 1024? 难度是你采集时就的原始数据就比较小吧?
    回复 有任何疑惑可以回复我~ 2023-09-24 19:21:32
快乐的兰那罗 2022-09-26 15:23:09

我也遇到了相同的报错,确认已授权,并且关闭沙盒

0 回复 有任何疑惑可以回复我~
李超 2022-09-25 22:20:32

参数传的不对,看下我上传的例子程序

0 回复 有任何疑惑可以回复我~
  • 就是跑老师的那个EncodeAAC的例子程序,也是这个错误
    回复 有任何疑惑可以回复我~ 2022-09-25 23:37:05
  • 李超 #2
    怎么可能?你运行的是我的工程文件?另外你在xcode 里给他访问摄像头权限了吗?沙盒关了吗?好好看看视频,别光看代码那块
    回复 有任何疑惑可以回复我~ 2022-09-26 07:42:33
  • 李超 #3
    权限给了吗?进入到课程QQ群,把你的错误截图发出来我看看
    回复 有任何疑惑可以回复我~ 2022-09-27 12:57:23
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信