ffmpeg开发中出现的问题(三)

不足请指正.... 请勿转载,因为结论还不成熟

1. provide packet is too small

原因:编码的时候, packet没有释放就使用

解决:

av_free_packet();

av_init_packet();

avcodec_encode_vidoe2();

这里如果把av_free_packet()写在后面都不行,真是怪了


2. sws_scale();提示错误

原因:

sws_scale中的frame都要分配空间和大小和格式,这样才可以成功,如果用指针,那么指针指向的地方是否有上述三点要求


3. avcode_decode_video234();或者avcodec_dencode_video2()错误

原因:

很大可能是packet和frame没有对应好,没有分配空间或者分配空间不对,或者格式


4 . 这个是看源代码发现的,不过一般是初学的

Unable to find a suitable output format for:

原因:

因为没有调用av_register_all();

如果有网络,就要调用另一个register

注意是否没有调用其它的初始化函数


5.

avcodec_encode_audio(audioStream->codec,audioBuffer,AUDIO_BUFFER_SIZE, frame.data.bytes);并没有输入参数来说明原始帧的长度,意味着ffmpeg在编码音频时默认音频原始帧长度是固定的,这个值由

audioStream->codec->frame_size来指定。

传入buffer区数据大小则由

audioStream->codec->frame_size * bytes per channel *channels来决定

ffmpeg音频编码时需要够一帧长度才会编码


6. 我这有个很简单原则:

ffmpeg如果出现警告,那一定要解决,否则到最后,就不知道错误来自何方.

警告累积多了,就会产生错误, 所以,警告一定要重视


7. ffmpeg 音频转码中,不能直接解码后马上编码,否则数据会出错。声音很杂,里面有主要声音

原因:两者的frame相关数据是不一样的,不能马上解码,只是data数据域相同,最重要的格式不一样

现象:1.打不开codec,原因是aac的需要s16.而不能乱设置。

            2. 声音无法写进去

            3. 噪声太大

解决: 重新分配一个frame ,把数据赋值过来


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值