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


Запись DV-файла type-1

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

Файл AVI типа-1 DV содержит один чередуемый поток. Чтобы записать файл type-1 во время предварительного просмотра, используйте граф фильтра, показанный на следующей схеме.

Запись типа 1 с предварительной версией

Фильтры в этом графе включают:

  • Фильтр Smart Tee разделяет чередуемый DV в поток записи и поток предварительного просмотра. Оба потока содержат одни и те же чередуемые данные.
  • AVI Mux и средство записи файлов записывают перемешанный поток на диск.
  • Разделитель DV разделяет чередованный поток на видеопоток DV и аудиопоток. Оба потока отрисовываются для предварительной версии.
  • Декодировщик видео DV декодирует видеопоток DV для предварительного просмотра.

Создайте этот граф следующим образом:

ICaptureGraphBuilder2 *pBuilder;  // Capture graph builder.
IBaseFilter           *pDV;       // DV capture filter (MSDV)
IBaseFilter           *pAviMux    // Avi Mux filter.

// Initialize pDV (not shown). 
// Create and initialize the Capture Graph Builder (not shown).

// Create the file-writing section of the graph.
hr = pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi, 
    OLESTR("C:\\Example1.avi"), &pAviMux, 0);

// Render the capture stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved, 
    pDV, 0, pAviMux);

// Render the preview stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Interleaved,
    pDV, 0, 0);

// Remember to release all interfaces.
  1. Вызовите ICaptureGraphBuilder2::SetOutputFileName , чтобы подключить фильтр AVI Mux к фильтру записи файлов.
  2. Вызовите ICaptureGraphBuilder2::RenderStream с категорией закреплений PIN_CATEGORY_CAPTURE для отрисовки потока записи. Построитель графов записи автоматически вставляет фильтр Smart Tee.
  3. Снова вызовите RenderStream, но с категорией закреплений PIN_CATEGORY_PREVIEW, чтобы отобразить поток предварительного просмотра. Пропустите этот вызов, если вы не хотите предварительно просмотреть видео.

Для обоих вызовов RenderStream тип мультимедиа MEDIATYPE_Interleaved, то есть видео с чередованием DV. В этом коде построитель графов отслеживания автоматически добавляет все необходимые фильтры, за исключением фильтра записи MSDV.

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