VideoToolbox не может правильно декодировать кодированный MFT H264
У кого-нибудь возникла проблема, когда VideoToolbox не может правильно декодировать кодированный Media Foundation Transform (MFT) H264? Декодированный кадр имеет искажение зеленого блока более половины кадра. Я попробовал пример Livy Stork для декодирования MFT-кода H264, который передается по сети с конечной точки видео на ПК, работающей на рабочем столе Windows 7. Я использую Xcode 6.3 и запускаю его на устройствах iOS 8.
Подсказка: тот же алгоритм отлично работает, когда кодированный MFT H264 поступает с конечной точки видео на ПК, работающей на Windows 8 или 8.1 на настольном компьютере / планшете. Согласно MSDN, большинство свойств кодеков не поддерживаются в Windows 7, но я не могу понять, какое свойство имеет значение...
2 ответа
Но если вы замените весь стартовый код всех NALU, он должен работать. Я успешно решил проблему, связанную с использованием Video Toolbox для декодирования массива данных с несколькими I-фрагментами или несколькими p-фрагментами, когда они начинаются с 4-байтового начального кода, а затем 8-сегментного с 3-байтовым стартовым кодом. Просто замените каждый стартовый код длиной среза соответственно. Обратите внимание, что длина фрагмента не включает длину начального кода, вы должны игнорировать их.
Оказалось, кодер MFT H264 на Windows 7 возвращает кадр с несколькими NAL. Для декодера VideoToolbox требуется, чтобы стартовый код NAL (0x00 00 00 01) был заменен размером NAL; когда он находит второй стартовый код NAL в кадре, он останавливает декодирование. Опять кодировщик MFT H264 на Windows 8 или выше не делает этого.