在iOS上流式传输RTSP时接收“文件结束”

时间:2013-11-05 15:21:21

标签: ios iphone objective-c ffmpeg video-streaming

我正在使用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数据包但没有帮助。

enter image description here

首先在现场直播中接收EOF是正常的(不应该结束)。

其次,一次又一次地调用 av_read_frame() 也没有帮助,但是当我重新启动整个方法时(从 {{1}开始) } )然后它的工作原理。只是流式传输不顺畅而且时不时地暂停。

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);

但是,对此的任何正确解释都会有所帮助。