| Предыдущий | Следующий |
| NS_E_BAD_MARKIN | NS_E_NOMATCHING_MEDIASOURCE |
NS_E_BAD_MARKOUT
Где Encoder формирует этот результат
0xC00D1B59 (NS_E_BAD_MARKOUT) обозначает проверку IWMEncSource.MarkOut относительно MarkIn и конца источника. Для NS_E_BAD_MARKOUT важной диагностической границей является объект Encoder, который проверяет это состояние; более позднее окно «не удалось начать кодирование» может скрыть точное происхождение ошибки.
До поступления образцов в кодек Windows Media Encoder строит временную шкалу каждого выбранного источника в сеансе, возвращающем NS_E_BAD_MARKOUT. До запуска кодировщика Encoder проверяет MarkOut вместе с MarkIn, Repeat и параметрами сжатия времени относительно фактической длительности источника.
Что уже завершилось успешно
Файл может успешно открываться и сообщать длительность, но всё равно завершиться здесь ошибкой, поскольку проверка временной шкалы выполняется после обнаружения источника, но до получения первого закодированного образца в сеансе, который возвращает NS_E_BAD_MARKOUT, поскольку временная шкала проверяется после обнаружения источника и до первого закодированного образца. Типичный случай: новый входной файл короче файла, использованного при создании сеанса .wme. Проверяйте NS_E_BAD_MARKOUT на объекте, который его вернул, а не как общий сбой кодека или операционной системы.
Снимок состояния, который нужно сохранить
| Поле | Что сохранить |
|---|---|
| Определяющие значения | Исходные значения MarkIn и MarkOut, обнаруженную длительность и сведения о том, изменилась ли длительность источника после повторной привязки |
| Объект-владелец | Имя группы источников, URL источника или моникер устройства, MarkIn и MarkOut в миллисекундах, обнаруженную длительность, флаг Repeat, режим предварительной обработки и состояние Encoder |
| Связь с сеансом | То же поколение группы источников, индекс аудитории, идентичность объекта и последовательность обратных вызовов, при которых возник NS_E_BAD_MARKOUT |
| Данные нижнего уровня | Первый HRESULT COM, драйвера, файловой системы или кодека, появившийся до сопоставления условия с NS_E_BAD_MARKOUT |
| Контролируемое сравнение | Заведомо исправный сеанс, в котором изменён только параметр, названный границей недопустимого MarkOut |
Как интерпретировать следующее наблюдение
| Наблюдение | Интерпретация |
|---|---|
| Наблюдение подтверждает этот результат | Определяющими данными являются исходные MarkIn и MarkOut, обнаруженная длительность и изменение длительности после повторной привязки. Они подтверждают проверку IWMEncSource.MarkOut относительно MarkIn и конца источника в том же поколении объекта. |
| Наблюдение указывает на более ранний сбой | Записанные значения удовлетворяют правилу MarkOut, но источник, драйвер, активация COM или файловая операция раньше возвращают другой HRESULT. |
| После проверки выявлен более поздний сбой | Encoder проходит эту границу, однако на следующем этапе завершается ошибкой кодек, архивный приёмник или приёмник трансляции. |
| Проверка после исправления | Внесите одно изменение: выберите MarkOut позже MarkIn и не позже фактической длительности источника. Затем повторите исходный вызов и убедитесь, что он проходит именно проверку MarkOut. |
Влияние NS_E_BAD_MARKOUT ограничено переходом временной шкалы и обрезки источника, который выполняет проверку IWMEncSource.MarkOut относительно MarkIn и конца источника. Для NS_E_BAD_MARKOUT сам по себе код не доказывает повреждение всех входных файлов, отсутствие всех кодеков или непригодность всей установки Windows Media. В типичном случае, когда новый вход короче файла, использованного при создании сеанса .wme, сохраните первый неуспешный вызов и идентичность объекта, чтобы более поздняя обёртка не заменила эти данные.
Контролируемая последовательность диагностики
- Запишите
0xC00D1B59,NS_E_BAD_MARKOUT, версию Encoder и точный вызов API или обращение к свойству, вернувшее результат. - Экспортируйте текущую конфигурацию
.wmeили.prx, затем сохраните исходные MarkIn и MarkOut, обнаруженную длительность и сведения об изменении длительности после повторной привязки. - Для
NS_E_BAD_MARKOUTпроверяйте предварительное условие временной шкалы и обрезки, не меняя одновременно источник, профиль и выходной приёмник. - Выполните одно контролируемое сравнение, изменив только это условие: установите MarkOut позже MarkIn и не позже фактической длительности источника.
- После изменения пересоздайте затронутый объект Encoder, не предполагая, что существующий граф отбросил прежнее состояние недопустимого MarkOut.
Близкие HRESULT с другим смыслом
| Результат | Почему это другая граница |
|---|---|
NS_E_BAD_MARKIN | проверка IWMEncSource.MarkIn до фиксации временной шкалы источника |
NS_E_SOURCE_CANNOT_LOOP | Repeat включён для типа источника, который нельзя воспроизводить повторно |
NS_E_MARKIN_UNSUPPORTED | обрезка по MarkIn или MarkOut запрошена для источника, не поддерживающего позиционирование по меткам |
Исправление на правильном уровне
Целевое исправление для NS_E_BAD_MARKOUT — выбрать MarkOut позже MarkIn и не позже фактической длительности источника. Повторная попытка имеет смысл только после изменения зафиксированного предварительного условия.
Во время диагностики временной шкалы не перекодируйте и не обрезайте единственную копию входного файла; сохраните исходную длительность и временные метки, чтобы недопустимый интервал можно было воспроизвести в сеансе, возвращающем NS_E_BAD_MARKOUT.
Технические ссылки для NS_E_BAD_MARKOUT
- IWMEncSource.MarkOut.
- IWMEncSource.Repeat.
- Подготовка группы источников к кодированию.
- Двухпроходное кодирование.
Нужно найти другой код? Найти другой код состояния или ошибки.