我正在使用 ffmpeg 库从本地网络中的 IP 摄像机流式传输 RTSP。流与代码一起工作正常。
唯一的问题是流似乎在一段时间后停止了。在进一步调试时,我发现我收到了“文件结束”,这就是循环中断的原因。
while(!playerShouldStop)// && (av_read_frame(pFormatCtx, &pkt1)>=0))
{
int ret = av_read_frame(pFormatCtx, &pkt1);
NSLog(@"av read frame returned = %s",av_err2str(ret));
if(ret >= 0)
{
// process video
}
else
break;
}
日志说
av 读取帧返回 = 文件结束
我下载了 Wireshark 来检查我收到了哪些 RTSP 数据包,但那里没有帮助。
首先,在直播流中接收 EOF 是正常的(不应该结束)。
其次av_read_frame()
,一次又一次地调用也无济于事,但是当我重新启动整个方法(从 开始avformat_open_input
)时,它就可以工作了。只是流媒体并不流畅,并且时不时会暂停。