Я создаю многопоточный видеоплеер. В настоящее время у меня возникают проблемы с попыткой закрыть файл. Фактически у меня может одновременно воспроизводиться от 1 до 4 видеофайлов. Когда я воспроизводю 4 файла, то в следующей последовательности есть только один, я не могу правильно перерисовать панель видео после удаления фильтра исходного файла.
Я должен сказать, что я строю график и управляю им вручную (чтобы получить дополнительную скорость), включая подключение всех фильтров/рендереров и т. д. Я изучил GMFBridge, но в конечном итоге столкнулся с проблемами синхронизации графика рендеринга и файлового графа. время (такие проблемы, как быстрое воспроизведение (догоняющее из-за временного кодирования) и необходимость одновременного запуска/паузы/остановки/пошагового управления мультимедиа на графиках рендеринга и файла (иногда неудачное воспроизведение)). Граф рендеринга по памяти должен быть настроен правильно, а мой сценарий не совсем вписывался в предоставленный образец (необходимость воспроизведения без видимых причин, но все же требовалось индивидуальное кодирование времени для каждого файла - не объединено в один большой файл).
Я повторно использую объекты IFilterGraph2/VMR/DirectSound на протяжении всего жизненного цикла приложения. Единственное, что меняется, это SourceFilter и необходимые декодеры/демультиплексоры.
Итак, процесс:
- Построить график
- Добавить визуализатор
- Попытка воспроизвести файл - в соответствии с типом файла добавьте исходный фильтр и демультиплексоры/декодеры и т. д. (удалите все устаревшие фильтры)
- Соедините фильтры вместе (вручную соедините контакты)
- Искать/играть и т. д.
- После этого выгрузите текущий исходный файл, вызвав Graph.RemoveFilter(), но оставьте средства визуализации в графе и отключите все выводы.
Я испытал следующую ошибку:
- Исключение COM+ при закрытии файла (и вызове VMR.RepaintVideo())
РЕДАКТИРОВАТЬ: ошибка такова:
Для этой операции требуется COM+, но он не установлен (исключение из HRESULT: 0x8004020C).
Я вызываю VMR.SetVideoClippingWindow() один раз при добавлении средства визуализации на график.
Есть ли способ выгрузить файл без удаления графа фильтров и перерисовать/очистить окно видео? если на то пошло, есть ли способ перерисовать видео, когда в графе нет фильтра исходного файла?