Требуется видеокомпрессор, совместимый с технологией DirectShow.

Я разрабатываю приложение, позволяющее записывать видео с веб-камеры. (используя визуальную студию 2008, С#)

Требуемый коэффициент сжатия составляет примерно 10 секунд = 1 мб. Я нашел единственный, который подходит для этого: тот, что из DivX Codec Pack, но вроде не бесплатно. А может и нет, не уверен: ставит через DivXInstaller, который скачивает много ненужной мне фигни, а в DivX Control Panel метка: DivX Codec, пробная версия, осталось 15 дней. И эта этикетка не меняется уже больше двух недель…

Другой хорошей альтернативой является компрессор VP40®. Коэффициент сжатия составляет примерно 1 сек на 1 Мб. Но у него какие-то странные проблемы с Windows XP, и я пока не могу понять, что с ним не так.

Есть вопросы, которые у меня есть сейчас:

  1. Есть ли хороший установщик для DivX Codec Pack, который установит только этот пак, не добавляя мусора весом 200 мб?
  2. Существуют ли другие хорошие видеокомпрессоры, совместимые с DirectShow? Те, которые у меня установлены по умолчанию (например, Microsoft Video 1, DV Video Encoder и т. д.), либо имеют плохую степень сжатия, либо ужасно плохое качество записанного видео.
  3. Ну и конечно бесплатный компрессор предпочтительнее.

P.S. Извините за мой плохой английский.

Кусок кода:

    // the part of method to record video

capture = new Capture(filters.VideoInputDevices[VCB.SelectedIndex], filters.AudioInputDevices[ACB.SelectedIndex]);
    // VCB & ACB are the combobox for video & audio capture devices
capture.VideoCompressor = filters.VideoCompressors[CCB.SelectedIndex];
    // that's the video compressor, that is used
    //and then:
    try
                    {
                        capture.PreviewWindow = panelVideo;
                        Log.CreateLogFiles("Video panel initialized");
                    }
                    catch (Exception ex) { Log.CreateLogFiles(ex); }
                    capture.Filename = "Somestring";
                    capture.Start();

person Olter    schedule 27.12.2011    source источник
comment
Вы захватываете последовательности изображений? Или что вы получаете от вашей веб-камеры?   -  person Matthias    schedule 27.12.2011
comment
Matthias Koch, насколько я понимаю, вывод с веб-камеры — это видеопоток.   -  person Olter    schedule 27.12.2011
comment
Извините, я должен спросить еще раз. Вы сначала создаете видеофайл, а затем хотите его сжать?   -  person Matthias    schedule 27.12.2011
comment
Ну, конечно, я не эксперт в DirectShow, но вот код. Упс, как мне добавить код? Лучше отредактировать основной вопрос.   -  person Olter    schedule 27.12.2011
comment
Да :) Если у вас есть это с веб-сайта, вы также можете указать URL-адрес.   -  person Matthias    schedule 27.12.2011
comment
Нет, это сжатие в реальном времени. Я нашел аналогичный вопрос здесь: ссылка, но те ответы не достаточно хороши для меня. ((   -  person Olter    schedule 27.12.2011


Ответы (2)


Вы можете рассмотреть возможность использования формата Windows Media, если достаточно решения только для Windows. Хотя может быть поддержка Mac. Добавление фильтра модуля записи WM ASF to DirectShow filter graph отобразит вывод в файл Windows Media. Битрейт/качество задаются через встроенные или определяемые пользователем профили.

Windows Media Encoder из Windows Media Encoder 9 Series SDK — это пользовательский интерфейс. инструмент, который можно использовать для точной настройки параметров сжатия, визуальной проверки качества и т. д.

person Dmitry Shkuropatsky    schedule 12.01.2012

Пробовали ли вы xvid?

Из википедии:

Xvid является основным конкурентом кодека DivX Pro. В отличие от кодека DivX, который является проприетарным программным обеспечением, разработанным DivX, Inc., Xvid является бесплатным программным обеспечением, распространяемым в соответствии с условиями Стандартной общественной лицензии GNU.

person yms    schedule 13.01.2012