Использование WMASFWriter создает видео, которое приостанавливается на каждом интервале ключевых кадров. - PullRequest
0 голосов
/ 31 января 2012

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

Я обнаружил, что во время, соответствующее интервалу ключевого кадра, видео останавливается на секунду или две.Похоже, что это хуже при разрешении HD, но это может быть красная сельдь.Какие вещи могут быть причиной этого?Связано ли это с тем, как часто я позволяю вызывать FillBuffer (моя частота кадров составляет 30 кадров в секунду, поэтому я получаю одно и то же растровое изображение, повторяющееся для нескольких кадров)?

1 Ответ

2 голосов
/ 31 января 2012

Здравый смысл (в отличие от конкретного опыта с рассматриваемым эффектом) предполагает, что кодирование ключевого кадра потребляет слишком много полосы пропускания, а оставшегося недостаточно для кодирования движения сегмента, который следует непосредственно за ключевым кадром. Я предполагаю, что это режим CBR, и, возможно, режим VBR может дать лучшую кодировку.

...