我正在使用avformat_open_input和av_read_frame从USB耳机(扬声器和麦克风-“ audio = virtual-audio-capturer”和USB麦克风设备)捕获音频帧,然后进一步处理该帧。一切正常。我可以将代码运行数天而没有任何问题。但是,当我从USB插孔中拔出耳机时,av_read_frame会出现错误代码-5。
这时,我使用avformat_close_input关闭输入设备,然后尝试打开输入设备。直到我重新插入耳机,此操作仍然失败。然后,我再次能够捕获帧并进行处理。但是,一段时间后,我从ffmpeg库中收到以下消息-
[dshow @ 0a529040]实时缓冲区[虚拟音频捕获器] [音频输入]太满或接近太满(大小的99%:3041280 [rtbufsize参数])!丢帧!
尽管我已关闭输入,但dshow似乎仍在捕获帧。大多数论坛都提到要增加rtbufsize,但这可能不是一个合适的解决方案,特别是如果我想长时间摘下耳机的话。
是否没有任何方法可以阻止dshow捕获帧,因此我可以在不丢帧的情况下运行我的代码,无论我卸下耳机多少次或放了多长时间?
谢谢。