Я работаю над проектом C ++, который зависит от электронной платы Wi-Fi RAK5206. Я использую библиотеку ffmpeg для получения видео- и аудиопотока, и у меня есть проблема, при которой я могу запустить и остановить поток четыре раза, но когда я хочу запустить в пятый раз, я получаю ошибку. Описание ошибки Invalid data found when processing input
, и это происходит, когда я вызываю функцию avformat_open_input
, и мне нужно перезапустить электронную плату, повторно подключиться к Wi-Fi и т. Д.
Я выяснил с помощью приложения Wireshark, что VLC работает, и этоотправляет несколько пакетов BYE при вызове TEARDOWN
. Интересно, зависит ли ошибка от них, потому что из моего заявления я не отправляю. Как я могу выполнить настройку, чтобы заставить ffmpeg отправлять пакеты BYE?
В файле rtpenc.h я нашел несколько объявлений, какие опции устанавливать и пробовать, когда я хочу подключиться, но, очевидно, безуспешно,Код, который я использовал для настройки параметров и открытия ввода:
AVDictionary* stream_opts = 0;
av_dict_set(&stream_opts, "rtpflags", "send_bye", 0);
avformat_open_input(&format_ctx, url.c_str(), NULL, &stream_opts);