Использование Async_reader и Wave Parser в графике фильтра DirectShow приводит к проблемам с поиском видео - PullRequest
1 голос
/ 16 января 2012

Некоторый фон:

Я пытаюсь создать исходный фильтр DirectShow на основе примера push-источника из DirectShow SDK. По сути, это выводит набор растровых изображений, каждое из которых может длиться долго (например, 30 секунд), к видео. Я настроил график фильтра, который использует Async_reader с Wave Parser для аудио и мой новый фильтр для передачи видео (фильтр CSourceStream, и я заполняю свои кадры в функции FillBuffer). Они оба подключены к WMASFWriter для вывода WMV.

Проблема:

Когда я пытаюсь просмотреть полученное видео, мне нужно подождать, пока наступит время начала растрового изображения, прежде чем оно отобразится. Например, если в данный момент я вижу растровое изображение 4 и возвращаюсь ко времени, когда отображается растровое изображение 2, вывод видео не изменится, пока не начнется третье растровое изображение. Сначала я задавался вопросом, не позволяю ли я вызывать FillBuffer достаточно (так как на данный момент это только один раз для каждого растрового изображения), однако с тех пор я заметил, что когда звуковая дорожка очень короткая (возможно, всего одна секунда), я могу искать через видео, как и ожидалось. Есть ли другой способ, которым я должен вводить звук в график фильтра? Нужно ли выполнять какую-то индексацию при визуализации WMV? Я в растерянности ...

1 Ответ

1 голос
/ 17 января 2012

Возможно, вам потребуется выполнить индексацию как этап постобработки. Попробуйте проиндексировать его с помощью Windows Media File Editor из Windows Media Encoder SDK и посмотрите, улучшит ли это поиск.

Уменьшение интервала ключевого кадра в профиле кодера может улучшить поиск. Это можно сделать в редакторе профилей Windows Media из SDK. Обратите внимание, что это приведет к увеличению размера файла.

...