Высококачественная запись видео с оптимизированным размером файла с использованием directshow.net

Я разрабатываю приложение на С# с помощью Directshow.NET. Я использую виртуальную камеру, которая поможет записывать экран рабочего стола. Итак, мой график:

Виртуальная камера ---> конвертер цветового пространства ---> захват семплов ---> писатель ASF.

При написании кода я использовал пользовательский .prx, который я сгенерировал с помощью Windows Media Profile Editor и настроил в IConfigAsfWriterиспользуя WMCreateProfileManager.

В файле .prx режим CBR, кодек Windows Media Video 9 и частота кадров 15fps с битрейтом видео 759 Кбит/с, но видео все равно выглядит размытым. Если я увеличу битрейт видео, например, до 5 Мбит / с, то этой размытости не будет, но увеличение битрейта приведет к большому размеру файла (54 секунды размера файла записи составляют 10 МБ).

Я попробовал другой график, используя виртуальную камеру graphEdit ---> AVI mux ---> File Writer, но это также генерировало большой файл .avi.

Как я могу записывать видео без эффекта размытия, сохраняя минимальный размер файла, например. 1 минута видео размером до 2-3 Мб? Нужно ли использовать какой-либо видеокомпрессор?


person Amogh    schedule 05.02.2016    source источник


Ответы (1)


Качество зависит от используемого кодека, а также от количества бит на пиксель. Вы можете рассчитать это следующим образом:

бит/пиксель = битрейт / (ширина * высота * частота кадров)

(битрейт в битах в секунду и частота кадров в кадрах в секунду)

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

person wimh    schedule 06.02.2016