1、首先需要确认返回码含义,可使用如下打印
int ret = av_interleaved_write_frame(rtmp_format_context, pkt);
if (ret < 0) {
char errbuf[100];
av_strerror(ret, errbuf, sizeof(errbuf));
LOG_P(LOG_ERROR, "RTMP interleave write frame error %s \n", errbuf);
}
2、对于end of file返回码分析
用上述操作,之前这个一堆魔鬼数字的返回码就有比较清楚的含义了。
RTMP interleave write frame error -541478725
这类问题是RTMP服务器关闭了客户端的链接,可能的原因有多种。代码正常情况的的可能有两种:
1、RTMP推流地址鉴权参数过期了
2、网络质量实在太差,RTMP服务器主动断掉。下面有个网上对网络差的分析记录。