c++ - 连接损坏时出现 rtsp 错误?

标签 c++ ffmpeg libavformat rtsp-client

我使用 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 的中断回调为这些函数添加超时,另请参阅 this问题。

关于c++ - 连接损坏时出现 rtsp 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18692339/

相关文章:

c++ - 以安全的方式了解 pthread 线程是否处于事件状态

javascript - 使用 javascript 发送实时视频

c++ - x264码率控制集

ffmpeg - 关键帧不是关键帧? AV_PKT_FLAG_KEY 未解码为 AV_PICTURE_TYPE_I

ffmpeg - 什么时候 fps 可以是猜测值而不是精确值?

c++ - 一段时间后获取 std::bad_alloc

c++ - 为什么在 -O2 中编译会使我的应用程序崩溃,但 -O2 -fno-default-inline 不会?

c++ - 编译器无法解析函数调用

c++ - (FFMPEG) avformat_write_header 崩溃 (MSVC2013) (C++) (Qt)

c++ - FFmpeg 到 Qt 5.0.2 : exit code -1073741515 on av_register_all();