Что означает код HRESULT 0xC00D3E8A (MF_E_NO_DURATION)?

 
Предыдущий Следующий
MF_E_MP3_NOTSUPPORTED MF_E_INVALID_FORMAT

MF_E_NO_DURATION

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

MF_E_NO_DURATION (0xC00D3E8A) — Для медиапотока не задана длительность.

Длительность — свойство всего источника или контейнера, а не отдельного текущего сэмпла. Для прямого потока, незавершённой загрузки, неизвестной длины байтового потока или некоторых файлов без достаточной индексной информации конечная длительность может быть недоступна.

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

Запишите тип источника, длину байтового потока, возможность позиционирования и состояние загрузки/финализации. Для конечного файла проверьте, достаточно ли данных контейнера или индекса, чтобы источник мог вычислить устойчивую общую длительность.

Не подменяйте неизвестную длительность текущей позицией или расчётом «байты / средний битрейт» и не используйте такую оценку для позиционирования: переменный битрейт и неполный ввод легко делают её неверной. Код должен явно поддерживать неизвестную длительность либо дождаться формирования конечного источника.

Документация для результата 0xC00D3E8A: MP3 File Source · IMFByteStream::GetLength · FFmpeg: MP3 duration and seek implementation.


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