Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Для того чтобы записать видео и закодировать его в файл Windows Media Video (WMV), подключите контакт для захвата к фильтру записи WM ASF , как показано на следующей схеме.
Самый простой способ построения этого графа заключается в спецификации MEDIASUBTYPE_Asf в методе ICaptureGraphBuilder2::SetOutputFileName:
IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
&MEDIASUBTYPE_Asf, // Create a Windows Media file.
L"C:\\VidCap.wmv", // File name.
&pASFWriter, // Receives a pointer to the filter.
NULL); // Receives an IFileSinkFilter interface pointer (optional).
Значение MEDIASUBTYPE_Asf сообщает построителю графов захвата использовать фильтр WM ASF Writer в качестве файла-выхода. Построитель графов записи создает фильтр, добавляет его в граф и вызывает IFileSinkFilter::SetFileName, чтобы задать имя выходного файла. Он возвращает указатель на фильтр в качестве исходящего параметра (
pASFWriter
в предыдущем примере).
Используйте интерфейс IConfigAsfWriter в модуле записи WM ASF для установки профиля Windows Media. Это необходимо сделать, прежде чем подключать какие-либо пины на WM ASF Writer.
IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
// Configure the ASF Writer filter.
pConfig->Release();
}
Дополнительные сведения о настройке профиля см. в Создание файлов ASF в DirectShow.
Вызовите ICaptureGraphBuilder2::RenderStream для подключения фильтра захвата к ASF Writer:
hr = pBuild->RenderStream(
&PIN_CATEGORY_CAPTURE, // Capture pin.
&MEDIATYPE_Video, // Video. Use MEDIATYPE_Audio for audio.
pCap, // Pointer to the capture filter.
0,
pASFWriter); // Pointer to the sink filter (ASF Writer).
Каждый входной контакт на фильтре записи WM ASF соответствует потоку в профиле Windows Media. Необходимо соединить каждый пин, чтобы содержимое файла соответствовало профилю.
Связанные разделы