第九章 常见问题

如何排查错误

av_strerror 函数根据返回值获取错误信息

找不到编码器/解码器

手工编译ffmpeg,将编码器/解码器链接进去

编码/解码的控制台一直在报缓存空间不足

造成这个问题的原因是,编码器/解码器写入帧的速度大于读取帧的速度,导致累积的帧占满缓冲区。解决方法是,处理完所有缓冲区的帧后再编码新的帧

遇到段错误怎么办

一旦遇到段错误,那么可以肯定前面有函数调用失败并且没有处理。注意排查下前面函数的返回值

写出的多媒体文件概率性出问题

调用 av_interleaved_write_frameav_write_frame 时加上锁

内存一直涨

  • AVFrame 没有释放
  • AVPacket 没有释放
  • AVAudioFifo 写入速度大于读取速度

解决方式:注释掉所有可能有内存泄露的地方,直到不泄露时,一行一行解开注释调试

音频播放速度变快或变慢

确认音频的采样率及通道数

音频播放时候大体正常,但会有规律的出现杂音

播放时不要使用 linesize,自己计算长度

音频失真

排查音频编码方式是否正确

开始播放视频时,出现几秒绿屏,后面才正常

绿屏出现原因是,YUV像素格式的所有值均为0,所以原因很可能是还没有接收或解析到视频帧,但将空的帧数据绘制到屏幕上了

没法使用 h264_high 进行编码,即使设置后,也会退化为 h264_mainh264_baseline

编码速度从 ultrafast 调整为 superfast 或更慢

results matching ""

    No results matching ""