环境:IP Camera
问题:推流到youtube若干个小时,直播断开。本地nginx-rtmp正常
问题排查:
怀疑点:
怀疑youtube比较特殊,是否需要发一些指定的数据给youtube。
验证:
大量的google,百度,参考一些rtmp推流代码,发现并不是这种情况
怀疑点:
看librtmp打印,就是单纯的网络问题,但是OBS可以推非常久。真的是网络问题的话,那只能重连
代码中原本也有重连机制,是在rtmp断开后一分钟进行重连。
发现:一分钟太久,由于长时间没有数据,youtube界面已经弹出了直播断开的弹窗,一旦这个弹窗出现,必须手动点击确定,并重连rtmp才行
修改方案:rtmp断开后,马上进行重连。直播3天无异常情况。
librtmp推流失败是一个臭名昭著的问题,最好的方法就是进行重连!