DirectShow RenderFile с сетевого URL имеет серьезный недостаток. Как этого избежать? - PullRequest
1 голос
/ 03 октября 2019

Я использую функцию DirectShow IGraphBuilder :: RenderFile для воспроизведения аудиопотока с сетевого URL. Это аудиопоток в реальном времени.

Работает так, как должен, проблема в том, что интернет-соединение слишком долго останавливается, если оно останавливается на короткое время, это не проблема, он продолжит воспроизведениепосле восстановления интернет-соединения, однако, когда интернет-соединение останавливается на слишком долгое время, например, несколько минут или больше. После того, как он восстановлен, воспроизведение не продолжается, и состояние графика похоже на то, как оно воспроизводится.

Как избежать этой ситуации? Или как я могу определить, что звук остановлен? IMediaControl :: GetState возвращает состояние, как будто оно воспроизводится.

1 Ответ

0 голосов
/ 04 октября 2019

Чтобы понять, какая часть конвейера вас подводит, вам нужно лучше понять топологию графа фильтра. В частности, я бы предположил, что ваш исходный фильтр является сторонним компонентом и является источником упомянутой проблемы, но вы еще не знаете, что именно. Утверждение, что IGraphBuilder::RenderFile делает что-то не так в отношении обработки отключения сети, вряд ли приблизит вас к решению.

Следующим шагом по устранению неполадок, который вы должны предпринять, является идентификация участвующих фильтров и выяснение деталей их потоковой передачи иобработка ошибок. Общие сведения о графике фильтра DirectShow. продолжает объяснять, как получить топологию графика и почему он так важен.

...