У меня есть пользовательский элемент управления в WinForm, который я использую для отображения потокового видео с помощью VMR9/DirectShow.Net. Я подаю декодированные кадры в собственный фильтр PushSource. Я вижу странное поведение, когда компьютер заблокирован, а затем разблокирован.User Control DirectShow VMR9 Video Display Замораживает при разблокировке компьютера
- Если я сделаю это довольно быстро, тогда начнется воспроизведение видео, как только я разблокирую компьютер.
- Иногда происходит задержка в 5-60 секунд, прежде чем снова начнет воспроизведение видео.
- Когда-то видеодисплей никогда не восстанавливается.
Я хотел бы также добавить, что я могу записывать видео с помощью FFmpeg, когда компьютер заблокирован, а также подтвердил, что кадры вставляются в исходном фильтр, но не отображаются (после разблокировки)
Я добавил поток, используя IMediaEvent для наблюдения за событиями графика. Когда я начинаю мой потоковый/график, я вижу события ClockChanged и Paused (даже если он играет). Когда я разблокирую свой компьютер, я вижу событие VMRRenderDeviceSet param1 = 2, param2 = 0 и Paused (param1 = 0, param2 = 0).
Моя топология графа (Custom) Нажмите Source Filter -> Color Space Converter -> Ds .Net Grabber -> Цветовое пространство конвертера 0001 -> Video Mixing Renderer 9.
Также я могу схватить правильный кадр время дисплей заморожен, поэтому, похоже, проблема заключается в VMR9.
С предоставленной информацией может кто-нибудь пролить свет на то, что может быть неправильным? Я могу предоставить любые другие детали по мере необходимости.
Тупики при разблокировке рабочей станции обычно вызваны тем, что SystemEvents запускает событие в неправильном потоке. Это восходит к инициализации вашей программы, что поток создает первое окно. С проблемой, когда это не основной поток.Написание собственного заставки - типичная причина. –
Основной поток создает форму, в которой inturn создает элемент управления. Нет заставки или что-то в этом роде. Насколько я мог видеть, для разблокировки нет SystemEvents, только сеанс, завершающий/завершающий и сеансовый. Как вы думаете, мне нужно каким-то образом обработать эти события? – integra753
Нет, я просто упомянул об этом как об общей причине. Слишком мало информации о вашем вопросе, чтобы помочь избавиться от таких возможностей. Шансы получить полезный ответ низкие. –