Конвертировать в DV AVI Type-1 видео - PullRequest
0 голосов
/ 01 апреля 2011

Я работаю над проектом, который требует конвертирования форматов mpg, avi, wmv. Поставщик требует, чтобы формат был в DV AVI Type 1. Это формат, который Windows Movie Maker предлагает при съемке с видеокамеры.

Мне нужен этот формат для некоторых инструментов поставщика, которые предполагают, что пользователь захватывает данные с устройства или что импорт существующего файла выполняется в этом формате.

Я знаю об этих двух инструментах, которые делают это, но я собираюсь включить автономный интерфейс библиотеки / командной строки, чтобы я мог обернуть процесс кодирования в собственном приложении.

http://paul.glagla.free.fr/dvdate_en.htm http://www.stoik.com/products/video/STOIK-Video-Converter/

В прошлый раз, когда я проверял, FFMPEG НЕ поддерживает это преобразование ... только наоборот от DV AVI1 до DV AVI2.

Я прочитал этот ресурс, но не знаю, как это можно включить в ffmpeg http://msdn.microsoft.com/en-us/library/dd388641(v=VS.85).aspx

Кто-нибудь пробовал конвертировать из формата X в DV AVI Type 1?

1 Ответ

1 голос
/ 01 апреля 2011

Я немного не уверен в точной проблеме, которую вы пытаетесь решить.Звучит так, будто вы хотите закодировать файлы mpg, avi, wmv в DV AVI type 1 и использовать ffmpeg как часть решения.

Существуют фильтры DirectShow для Microsoft DV Video Encoder и DV muxer, которые будут объединятьвидео и аудио в единый видео + аудио DV-поток, необходимый для DVI типа 1.

I 'Я не очень знаком с ffmpeg, но я не уверен, зачем вам это нужно для вашей конкретной проблемы.DirectShow может обрабатывать самые разные форматы ввода.Из часто задаваемых вопросов видно, что ffmpeg может получать входные данные из фильтра DirectShow, но не записывать данные в фильтр DirectShow.

Было бы проще всего выполнить преобразование только с DirectShow без ffmpeg:

  • Создание графа DirectShow (CoCreateInstance получает IGraphBuilder).
  • Создание исходного фильтра из вашего входного файла (IGraphBuilder :: AddSourceFilter)
  • Создание фильтра кодера DV (CoCreateInstance)
  • Добавление фильтра кодера DV в график (IFilterGraph:: AddFilter)
  • Подключите вывод источника видео к кодировщику DV (IGraphBuilder :: Connect)

Затем аналогично:

  • Подключите новый DVподключите к выходу видеокодера DV и к выходному аудиосигналу из фильтра источника (вам может понадобиться промежуточный фильтр для сжатия звука в нужный формат).
  • Подключите выход мультиплексора dv к новому фильтру avi mux.
  • Подключите выход мультиплексора avi к новому фильтру средства записи файлов, настроенному с вашим файлом назначения.
  • Запустите график, используя IMediaControl и IMediaEvents для преобразования вашего входного файла в ваш выходной файл.

Если я неправильно понял ваш вопрос, тогда вы сможете построить другой график, который будет преобразован в илииз DV AVI типа 1 или 2. Для записи типа 2 вам не нужно использовать dv muxer.

Все это можно легко проверить заранее с помощью GraphEdit или аналогичных инструментов перед написанием любого кода.GraphEdit доступен с Windows SDK.GraphStudio - это альтернатива с открытым исходным кодом, но есть и другие.В целях разработки вы также можете построить график в GraphEdit или аналогичном, а затем загрузить его и запустить в своем собственном тестовом приложении (см. http://msdn.microsoft.com/en-us/library/dd390649(v=vs.85).aspx)

. Для получения некоторой базовой информации о начале работы см .: - Страница Wikipedia на DirectShow.- Как я могу изучить программирование DirectShow? - Где найти подробное руководство по DirectShow?

...