连接损坏时出现 rtsp 错误



我使用ffmpeg libavformat录制来自松下相机的RTSP流。我可以同时获得音频和视频流,一切都很好,直到服务器和相机之间损坏。

  • "av_read_frame"功能没有返回任何内容,我认为它一直在等待从相机接收帧,但是由于连接损坏,它不能返回。我期望这个函数应该完成它的任务并返回错误(连接失败或类似的东西),但它没有并且永远卡住了。
  • 连接断开时,"avformat_open_input"功能存在相同的问题。因此,无法处理左侧函数

任何人都可以向我解释这里的问题是什么以及我的代码有什么问题。如何避免这种情况的死锁。

(环境:Win 7,VS 2010,FFMPEG:20130227-git-5d2f2c7,局域网)

    int main(int argc, char** argv)
{
    AVFormatContext* context = avformat_alloc_context();
    int video_stream_index;
    av_register_all();
    avcodec_register_all();
    avformat_network_init();
    //open rtsp
    if(avformat_open_input(&context, "rtsp://username:12345/192.168.1.253:554/mpeg4/640x480",NULL,NULL) != 0)
    {
        return EXIT_FAILURE;
    }
    if(avformat_find_stream_info(context,NULL) < 0)
    {
        return EXIT_FAILURE;
    } 
    AVPacket packet;
    av_init_packet(&packet);
    //start reading packets from stream and write them to file
    while(av_read_frame(context,&packet))
    {
       //Store packet here
    }
    av_free_packet(&packet);
    return (EXIT_SUCCESS);
}

您可以使用 ffmpeg 的中断回调为这些函数添加超时,另请参阅此问题。

相关内容

  • 没有找到相关文章

最新更新