我正在使用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 read frame returns =文件结束
我下载了Wireshark以查看我收到的RTSP数据包但没有帮助。
首先在现场直播中接收EOF是正常的(不应该结束)。
其次,一次又一次地调用 av_read_frame()
也没有帮助,但是当我重新启动整个方法时(从 {{1}开始) } )然后它的工作原理。只是流式传输不顺畅而且时不时地暂停。
答案 0 :(得分:0)
好吧......当我使用AVDictionary选项打开流时,似乎没有EOF。
AVDictionary *opts = 0;
int ret = av_dict_set(&opts, "rtsp_transport", "tcp", 0);
// Open video file and read header information into pFormatCtx
if (avformat_open_input(&pFormatCtx, filename, NULL, &opts) != 0)
{
NSLog(@"Error opening video file.");
return;
}
av_dict_free(&opts);
但是,对此的任何正确解释都会有所帮助。