Поделиться через


Пример DVApp

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Описание

Приложение для записи цифрового видео (DV).

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

Использование

Приложение DVApp поддерживает следующие режимы:

  • Предварительный просмотр: отрисовывает dv из видеокамеры в окно видео.
  • DV в файл типа 1: записывает данные DV из видеокамеры в DV-файл типа 1.
  • Файл типа 1 в DV. Передает данные из DV-файла типа 1 в видеокамеру.
  • DV в файл типа 2: записывает данные DV из видеокамеры в DV-файл типа 2.
  • Файл типа 2 в DV. Передает данные из dv-файла типа 2 в видеокамеру.

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

Приложение запускается в режиме предварительного просмотра. Чтобы выбрать другой режим, выберите режим в меню Режим графа . Для каждого режима DVApp создает граф фильтра, который поддерживает функциональные возможности этого режима. Чтобы сохранить граф в виде файла GraphEdit (GRF), выберите Сохранить граф в файл в меню Файл . Закройте DVApp перед открытием файла в GraphEdit.

Запись в файл:

  1. В меню Файл выберите Задать выходной файл и введите имя файла.
  2. В меню Режим графа выберите dv to File Mode (Тип 1 или Тип 2 с предварительным просмотром или без нее).
  3. Щелкните Запись.
  4. Если видеокамера находится в режиме VTR, нажмите кнопку Воспроизвести.
  5. Чтобы остановить запись, нажмите кнопку Остановить.

Для передачи из файла в видеокамеру:

  1. В меню Файл щелкните Задать входной файл и выберите DV-файл. Файл должен соответствовать выбранному режиму (тип 1 или 2).
  2. В меню Режим графа выберите режим файлов в dv (тип 1 или тип 2 с предварительным просмотром или без нее).
  3. Нажмите кнопку Воспроизвести.
  4. Чтобы записать данные на ленту, нажмите кнопку Записать.
  5. Чтобы остановить передачу, нажмите кнопку Остановить.

Если видеокамера находится в режиме VTR, пользователь может управлять механизмом транспорта с помощью кнопок приложения в стиле VCR. Чтобы найти ленту, введите целевой код времени и нажмите кнопку поиска.

Чтобы ограничить объем данных, которые захватывает приложение, выберите Размер записи в меню Файл .

Чтобы проверка ленточный формат (NTSC или PAL), выберите Проверить ленту в меню Параметры.

Чтобы изменить размер окна предварительного просмотра, в меню Параметры выберите Изменить размер декодирования.

Заметки по программированию

Main цель этого приложения — показать, как создавать различные графы записи и передачи dv.

Получение и удаление устройства

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

Приложение одновременно обрабатывает только одно устройство. Если текущее устройство удалено, приложение ищет другое устройство DV в системе.

На некоторых цифровых видеокамерах пользователь должен отключить устройство при переключении между режимами камеры и режимами VTR, что приводит к возникновению сообщения о потере устройства. Приложение в ответ включает или отключает соответствующие команды меню. Однако если пользователь быстро переключается между режимами, видеокамера может не создать сообщение о потере устройства. Вы можете принудительно обновить меню, выбрав Режим обновления в меню Параметры . Некоторые цифровые видеокамеры могут переключать режимы без отключения, но отправлять сообщение о потере устройства только при переключении в режим VTR.

Управление устройством

Функциональность кнопки "Воспроизвести и запись " зависит от текущего режима:

  • Предварительный просмотр: граф фильтра запускается автоматически. Кнопка Воспроизвести запускает транспорт.
  • Запись в файл. Кнопка "Записать " запускает граф, а кнопка "Воспроизвести " запускает транспорт.
  • Передача на устройство. Кнопка Воспроизвести запускает граф, а кнопка "Записать " запускает транспорт.

Пример приложения не выполняет запись с точностью до кадра. В различных точках приложение вызывает функцию спящего режима , чтобы дождаться ответа устройства. Новые цифровые видеокамеры отправляют уведомление при изменении состояния устройства. Старые устройства могут не поддерживать уведомления; В целях примера вызов спящего режима является более простым решением.

Скачивание примера

Чтобы скачать примеры пакета SDK DirectShow, установите последнюю версию пакета Windows SDK.

Этот пример устанавливается по следующему пути: [корневой каталог sdk]\Samples\Multimedia\DirectShow\Capture\DVApp.

Управление dv camcorder

Цифровое видео в DirectShow

Примеры DirectShow