Как мне кодировать видео в Visual C? - PullRequest
2 голосов
/ 15 июля 2009

У меня есть библиотека расшифровщика видео, которая может декодировать устаревший видеоформат и возвращать видеокадры в BMP и аудио в WAV через функции обратного вызова. Теперь мне нужно закодировать новое видео в любом стандартном формате под Windows.

Каким может быть стандартный способ сделать это? Я использую Win32 / C. Я предполагаю, что Windows имеет собственную библиотеку кодирования и драйверы, и мне не нужно использовать FFMPEG. Любой указатель на пример кода или, по крайней мере, на библиотеку будет полезен.

Редактировать: я принимаю. FFMPEG - самый простой способ сделать это.

Ответы [ 3 ]

5 голосов
/ 15 июля 2009

В Windows у вас есть два собственных варианта.

  1. Старая Windows Multimedia библиотека, которая слишком древняя, чтобы ее можно было серьезно рассмотреть, но у которой есть Диспетчер сжатия видео .
  2. А потом есть DirectShow .

Это, конечно, выполнимо через DirectShow, но вам больше нравится программирование на COM и концепции фильтров, графиков и моникеров (о боже). Смотрите этот урок для ускоренного курса:

Повторное сжатие файла AVI

И документация MSDN .

Более простой подход - использовать библиотеку типа FFMPEG или VLC .

4 голосов
/ 15 июля 2009

Чтобы сохранить душевную боль, я повторяю предложение Фрэнка просто использовать FFMPEG. Выполнение отдельного процесса FFMPEG с правильными аргументами будет 100% самым простым способом для достижения ваших целей кодирования.

Ваши другие варианты включают:

libavcodec - Центральная библиотека, используемая в FFMPEG. Я предупреждаю, что не существует большого числа доступных для Windows двоичных файлов libavcodec, поэтому вам, вероятно, придется скомпилировать свой собственный, что, как минимум, потребует установки Cygwin или MingW.

ffdshow-tryouts - Библиотека видеокодеков, реализованная в виде фильтра DirectShow на основе libavcodec. Кажется, у них есть API для управления им, но это библиотека .NET.

1 голос
/ 15 июля 2009

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

...