ffmpeg dshow Рамка упала при снятии и повторной вставке гарнитуры - PullRequest
0 голосов
/ 11 февраля 2019

Я использую avformat_open_input и av_read_frame для захвата аудио-кадров с моей USB-гарнитуры (динамик и микрофон - «audio = virtual-audio-capturer» и мое устройство с USB-микрофоном), а затем для дальнейшей обработки кадра.Все отлично работаетЯ могу запустить свой код в течение нескольких дней без каких-либо проблем.Однако, когда я вынимаю гарнитуру из гнезда USB, как и ожидалось, av_read_frame выдает код ошибки -5.

В это время я закрываю свое устройство ввода с помощью avformat_close_input и пытаюсь открыть устройство ввода.Это продолжает терпеть неудачу, пока я повторно не вставляю свою гарнитуру.Затем я снова могу захватывать кадры и обрабатывать их.Однако через некоторое время я получаю следующие сообщения из библиотеки ffmpeg:

[dshow @ 0a529040] буфер реального времени [virtual-audio-capturer] [audio input] слишком переполнен или почти заполнен (99% от размера: 3041280 [параметр rtbufsize])!кадр пропущен!

Кажется, dshow продолжает захватывать кадры, хотя я закрыл ввод.Большинство форумов упоминают об увеличении размера rtbufsize, но это может быть неправильным решением, особенно если я хочу удалить свою гарнитуру на длительное время.

Нет ли способа остановить dshow от захвата кадров, чтобы ясмогу выполнить мой код без пропуска кадров, независимо от того, сколько раз или как долго я удаляю гарнитуру?

Заранее спасибо.

...