记一次ffmpeg进程阻塞的问题排查过程

背景

在生产环境中,我们使用ffmpeg进行视频转码,将RTSP转HLS或者FLV在web端观看.每一路视频对应一个ffmpeg进程.一直都跑的挺好的.

问题

最近运维人员发现一个故障点:

有一路视频停了,其它都正常.

排查

检查后发现该路视频的确不正常:

  1. 看进程输出的m3u8ts,长时间不更新了.
  2. 看任务管理器,该路ffmpeg进程存在,但是其IO确实不正常,基本上不变,而其它路的IO都是持续增长的.这说明一个问题,该路ffmpeg进程阻塞了.

生产环境需要尽快恢复,所以我重启了一下这个进程,问题解决.但是墨菲定律告诉我们,这个问题发生了,那肯定会继续发生下去.所以要排查原因.
过程十分艰苦,但最终发现似乎是因为aac编码阻塞导致的,网上也有类似的问题反馈:
https://stackoverflow.com/questions/2410459/encode-audio-to-aac-with-libavcodec
以及:
https://ffmpeg.org/pipermail/libav-user/2011-August/000501.html

阻塞点是aacenc里面aac_encode_frame进入了无限循环无法退出,就是这个:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值