| Предыдущий | Следующий |
| 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.
Нужно найти другой код? Найти другой код состояния или ошибки.