Как указать объект списка языков в Windows Media Foundation SDK - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время я пытаюсь использовать Windows Media Foundation SDK (C ++) для создания файла WMV в Windows 10.

Мне удалось создать файл WMV, но мне трудно добавить объект списка языков (7C4346A9-EFE0-4BFC-B229-393EDE415C85) в файл asf.

Я использую WMSinkWriter для создания файла, и способ передачи входных видео / аудио данных описан в следующей статье: https://docs.microsoft.com/en-us/windows/desktop/medfound/tutorial--using-the-sink-writer-to-encode-video

Вот краткое изложение того, что я делаю:

  1. Вызовите CoInitializeEx для инициализации библиотеки COM.
  2. Вызовите MFStartup для инициализации Microsoft Media Foundation.
  3. Создайте модуль записи приемника.
  4. Отправьте видеокадр в модуль записи приемника.
  5. Вызовите IMFSinkWriter :: Finalize, чтобы завершить вывод файла.
  6. Отпустите указатель на модуль записи приемника.
  7. Позвоните в MFShutdown.
  8. Позвоните в CoUninitialize.

В интернете не так много информации, поскольку это старый SDK.

Если у вас есть какие-либоподсказка, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 27 июня 2018

IMFASFContentInfo Интерфейс ASF Media Sink может быть получен из Sink Writer с использованием GetServiceForStream и с указанием MF_SINK_WRITER_MEDIASINK, например:

pSinkWriter->GetServiceForStream(MF_SINK_WRITER_MEDIASINK, GUID_NULL, IID_PPV_ARGS(&pContentInfo));

, где pContentInfo указывает наIMFASFContentInfo.

1009 * Вы должны быть в состоянии использовать IMFASFContentInfo, чтобы установить список языков, используя любой или все MF_SD_LANGUAGE , MF_SD_ASF_EXTSTRMPROP_LANGUAGE_ID_INDEX , MF_PD_ASF_LANGLIST атрибуты в соответствующем IMFStreamDescriptor IMFPresentationDescriptor , полученном объектом IMFASFContentInfo с использованием GeneratePresentationDescriptor метод.
...