Что означает код HRESULT 0xC00DA410 (MF_E_TRANSCODE_NO_CONTAINERTYPE)?

 
Предыдущий Следующий
MF_E_QM_INVALIDSTATE MF_E_TRANSCODE_PROFILE_NO_MATCHING_STREAMS

MF_E_TRANSCODE_NO_CONTAINERTYPE

Что означает MF_E_TRANSCODE_NO_CONTAINERTYPE

MF_E_TRANSCODE_NO_CONTAINERTYPE (0xC00DA410) — Не указан тип выходного контейнера транскодирования.

Профиль транскодирования хранит настройки аудио, видео и контейнера раздельно. Для построения выходного файла в атрибутах контейнера должен присутствовать MF_TRANSCODE_CONTAINERTYPE; по нему Media Foundation выбирает формат контейнера и соответствующий приёмник.

Что проверить и как подтвердить исправление

Вызовите IMFTranscodeProfile::GetContainerAttributes непосредственно перед MFCreateTranscodeTopology и проверьте наличие MF_TRANSCODE_CONTAINERTYPE. Новый IMFTranscodeProfile создаётся пустым, поэтому одного вызова MFCreateTranscodeProfile недостаточно.

Проверьте, что GUID контейнера записан именно через SetContainerAttributes, а не попал по ошибке в атрибуты аудио или видео. Для типовых сценариев значением будет, например, MFTranscodeContainerType_MPEG4, MFTranscodeContainerType_ASF или другой поддерживаемый тип контейнера.

Не диагностируйте этот код как отсутствие кодировщика. Аудио- и видеокодеки описывают содержимое потоков, а тип контейнера — внешний формат результата. Изменение расширения имени файла само по себе отсутствующий атрибут не создаёт.

Документация для результата 0xC00DA410: MFCreateTranscodeTopology · using the Transcode API · IMFTranscodeProfile.


Нужно найти другой код? Найти другой код состояния или ошибки.