我使用 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);
}