FFMPEG API: как подключиться к потоку RTSP с помощью av_open_input_file?

#ffmpeg #rtsp-client

#ffmpeg #rtsp-клиент

Вопрос:

Я пытаюсь подключиться к некоторому потоку RTSP с помощью av_open_input_file() следующим образом:

AVFormatContext* ic;
avcodec_register_all();
av_register_all();
av_open_input_file(amp;ic, "rtsp://login:password@xxx.xxx.xxx.xxx/videoinput_1/mjpeg/media.stm", NULL, 4096, NULL);

Он всегда возвращает «файл не найден». Тот же URL-адрес я вижу, скажем, в VLC player. Я делаю что-то не так в своем коде?

Я использую FFMPEG 0.6, должен ли я использовать последнюю версию?

Ответ №1:

Оказалось, что я не включил поддержку сети при сборке FFMPEG.

Для меня работали следующие параметры:

—включить-сеть —включить-протокол= tcp —включить-демультиплексирование= rtsp —включить-декодер= h264

Комментарии:

1. Я не нашел —enable-protocol=rtsp . Как вы это исправили?

2. Я использовал —enable-network —enable-protocol=tcp —enable-demuxer=rtsp —enable-decoder=h264 в файле конфигурации, что позволило мне включить rtsp

3. -enable-demuxer=rtsp также решил мою проблему. Мне не нужен был h264, так как мое приложение работает только с потоковой передачей звука.

4. Параметры @AlexanderKulyakhtin — это именно то, что мне нужно для работы потоковой передачи RTSP. Я знаю, что комментариев с благодарностями следует избегать, но этот ответ может быть действительно полезен и другим пользователям, поэтому будьте уверены, что это реальная сделка!