Получить ошибку RTSP, когда соединение повреждено?

Я использовал ffmpeg libavformat для записи потока RTSP с камеры Panasonic. Я могу получить как аудио, так и видеопоток, что все в порядке, пока не произойдет повреждение между сервером и камерой.

  • функция «av_read_frame» не вернула ничего, я думаю, что она ожидала получения кадра от камеры, однако, это не может быть из-за поврежденного соединения. Я ожидал, что эта функция должна выполнить свою задачу и вернуть ошибку (сбой соединения или что-то в этом роде), но это не так и застряло навсегда.
  • та же проблема с функцией «avformat_open_input», когда соединение повреждено. Поэтому левые функции не могут быть обработаны

Любой может объяснить мне, в чем здесь проблема и что не так с моим кодом. Как я могу избежать тупика для этого случая.

(Среда: Win 7, VS 2010, FFMPEG: 20130227-git-5d2f2c7, сеть LAN)

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

0

Решение

Вы используете обратный вызов ffmpeg для добавления тайм-аутов к этим функциям, см. Также этот вопрос.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]