Аппаратное декодирование видео что это
FFmpeg практика аппаратного декодирования DXVA2
Привет! Эта статья продолжение моей статьи FFmpeg начало работы Visual Studio. Здесь мы приступим к аппаратному декодированию RTSP-потока FULL HD. Заранее скажу, что с данной задачей легко справится даже Intel ATOM Z8350.
Задача: аппаратное декодирование и запись до 4-х кадров в оперативную память для последующей параллельной обработки (четырьмя ядрами процессора) с IP-камеры RTSP h.264. Обработанные кадры отображаю с помощью функций WinAPI. Как итог мы получим быстродействующую систему для компьютерной обработки RTSP-потока в параллельном режиме. Далее можно подключать алгоритмы Компьютерного зрения для обработки кадров Real Time.
Вступление
Зачем нужно аппаратное декодирование? Вы хотите слабым и дешевым процессором декодировать видео реал-тайм или хотите максимально разгрузить процессор, тогда пора знакомиться с аппаратным декодированием.
DirectX Video Acceleration (DXVA) — это API для использования аппаратного ускорения для ускорения обработки видео силами графических процессоров (GPU). DXVA 2.0 позволяет перенаправлять на GPU большее количество операций, включая захват видео и операции обработки видео.
После написания предыдущей статьи мне было задано не мало вопросов: «почему использован именно FFmpeg?» Начну с проблематики. Основная сложность аппаратного декодирования состоит в записи раскодированного кадра в ОЗУ. Для Full HD это 1920 х 1080 х 3 = 6 220 800 байт. Даже с учетом того что кадр хранится в формате NV12 – это тоже немало 1920 x 1080 x 1.5 = 3 110 400 байт. Перезаписывать 75 Мбайт в секунду серьезная задача для любого процессора. Для решения этой задачи Intel добавила команды SSE 4, которые позволяют переписывать данные без участия процессора. К сожалению, не во всех библиотеках это реализовано. Мной были опробованы следующие библиотеки:
OpenCV – для работы с потоком RTSP использует FFmpeg, поэтому решено работать без посредников, т.е. использовать библиотеку FFmpeg. К тому же FFmpeg, который установлен по умолчанию, в OpenCV собран без аппаратного декодирования.
FFmpeg – показала хорошие, на мой взгляд результаты, работает стабильно. Единственный недостаток не реализована работа с WEB-камерами для версии X86 (X64 вроде позволяет работать) в Windows.
Аппаратное декодирование видео — это просто
На самом деле аппаратное декодирование с помощью библиотеки FFmpeg — не сложнее программного. Настройки проекта такие же, как и для программной реализации, блок-схема осталась без изменений.
Вывести на экран список поддерживаемых FFmpeg методов аппаратного декодирования можно
Первое, что нам нужно сделать — это сообщить FFmpeg с помощью какого аппаратного декодера Вы хотите декодировать видео. В моем случае Windows10 + Intel Atom Z8350 оставляют только DXVA2:
Вы же в качестве аппаратного декодера можете выбрать CUDA, D3D11VA, QSV или VAAPI (только Linux). Соответственно у вас должно быть данное аппаратное решение и FFmpeg должен быть собран с его поддержкой.
Получаем информацию о видеопотоке:
Данная функция переписывает декодированный файл в ОЗУ:
Немного о формате NV12
Итак, мы получили кадр в структуру sw_frame. Полученный кадр хранится в формате NV12. Данный формат был придуман Microsoft. Он позволяет хранить информацию о пикселе в 12 бит. Где 8 бит интенсивность, а 4 битами описывается цветность (вернее цветность сразу описывается для 4-х рядом стоящих пикселей 2х2). Причем, sw_frame.data[0] – хранится интенсивность, а в sw_frame.data[1] – хранится цветность. Для перевода из NV-12 в RGB можете воспользоваться следующей функцией:
Хотя работа с NV12 позволяет ускорить выполнение таких процедур, как размывка, Retinex и получение изображения в оттенках серого (просто отбросив цветность). В моих задачах я не перевожу формат NV12 в RGB, так как это занимает дополнительное время.
И так мы научились аппаратно декодировать видеофайлы и выводить их в окно. Познакомились в форматом NV12 и как его преобразовывать в привычный RGB.
Dll аппаратного декодирования
Кадры FFmpeg выдает через 40 мс (при 25 кадрах в секунду). Как правило, обработка кадра Full HD занимает значительно больше времени. Для этого требуется организовать многопоточность, для максимальной загрузки всех 4-х ядер процессора. Я на практике один раз запускаю 6 потоков и больше их не снимаю, что значительно упрощает работу и увеличивает надежность работы программы. Схема работы приведена на рис. 1
рис.1 Схема построения многопоточной программы с FFmpeg
Я написал свой декодер в виде *.dll (FFmpegD.DLL) для включения в свои проекты. Это позволяет сократить код-проекта, что повышает понимание кода и включать в любые языки программирования, вплоть до Ассемблера (проверено:) ). С помощью нее мы напишем свой проигрыватель RTSP-потока с IP-камеры.
Для начала работы с DLL нужно передать указатель массив int[13], HANDLE события поступления нового кадра, HANDLE начала обработки нового пакета данных с камеры и массив char адрес камеры.
Структура массива дана в таблице 1.
Перед вызовом необходимо обнулить номера кадров 1-4.
DLL выполнит все необходимые действия по инициализации FFmpeg и будет записывать указатели и номера кадров. После установит событие «Поступление нового кадра». Нужно только обрабатывать поступающие кадры и вместо номера кадра записывать 0 (это значит кадр обработан и больше не используется).
Ниже Вы найдете пример проигрывателя с исходным кодом. За основу взят пример ShowDib3 Charles Petzold.
ИТОГ: аппаратный детектор движения FFmpeg даже на Intel Atom Z8350 декодирует h264 Full HD в реальном времени с загрузкой процессора до 20% с подключенный детектором движения.
Пример работы детектора движения на Intel ATOM Z8350. Первые 30 сек идет подсчет фона. После работает детектор движения по методу вычитания фона.
Аппаратное декодирование
Для поддержки технологии аппаратной поддержки воспроизведения, DirectX Video Acceleration (DXVA), требуются специальные декодеры (например, NVIDIA PureVideo Decoder, CyberLink MPEG2 и H.264 video decoder), и проигрыватели с поддержкой DXVA. На данный момент существуют DXVA-декодеры для аппаратного ускорения MPEG2, WMV, VC-1 и H.264
У разных видеочипов уровень поддержки аппаратного ускорения декодирования видео разный, он зависит от модели карты и установленного чипа. Ранее, некоторые low-end решения были ограничены в поддержке декодирования видео высоких разрешений, но складывается обратная ситуация — что у AMD, что у NVIDIA. Верхние чипы линеек, GeForce и RADEON, не поддерживают всех возможностей, которыми обладают решения среднего и низшего ценовых диапазонов.
Аппаратное ускорение работает не всегда идеально, не со всеми декодерами и типами видеоданных. Так, изначально сразу несколько производителей плееров и декодеров H.264 объявили о поддержке ускорения в решениях. На деле это были, скорее, рекламные заявления, и ускорение H.264 или не работало вовсе или работало кое-как. Например, в своё время на рынке появилась версия PowerDVD 7.0 с поддержкой декодирования H.264, но не работающим аппаратным ускорением, версия того декодера была 1.6.0.1528. При использовании этого декодера ускорение включается, но на деле не работает.
Кроме того, на разных моделях видеокарт одной и той же компании ускорение может работать, а может не работать. Особенно это относится к low-end и mid-end решениям прошлых поколений, таких как GeForce 6600 и RADEON X1300. Бывали случаи, когда при выполнении одинаковой последовательности действий, ускорение включалось на одной карте, но не включалось на другой. Это ещё не все проблемы аппаратного декодирования, так, H.264 декодер CyberLink в DXVA ускоренном режиме всегда отключает деблокинг (удаление артефактов блочности изображения), что хорошо заметно на плавных цветовых переходах. и стоит отметить, что некоторые версии декодеров могли работать в аппаратно ускоренном режиме на видеокартах одного производителя, и не работать на видеокартах другого, в зависимости от версий драйверов.
Рендеринг с ускорением графического процессора и аппаратное кодирование/декодирование
В этой статье говорится об Adobe Insight (с ускорением графического процессора) и аппаратном декодировании/кодировании (Intel® Quick Sync) в Adobe Premiere Pro и Adobe Media Encoder.
Adobe Premiere Pro и Adobe Media Encoder могут использовать имеющиеся в вашей системе графические процессоры для распределения нагрузки между ЦП и ГП для повышения производительности. В настоящее время большая часть обработки выполняется центральным процессором, а графический процессор помогает в обработке определенных задач и функций.
Модуль рендеринга Mercury Playback Engine (с ускорением графического процессора) используется для рендеринга эффектов и функций с ускорением графического процессора.
Здесь представлен список эффектов с ускорением графического процессора в Adobe Premiere Pro. Чтобы найти эффекты с ускорением графического процессора, перейдите на панель Эффекты и найдите значок «Ускоренные эффекты».
Значок эффектов с ускорением графического процессора
Помимо обработки этих эффектов, Mercury Playback Engine (с ускорением графического процессора) используется для обработки изображений, изменения размеров, преобразования цветового пространства, изменения цвета и многого другого. Он также используется для воспроизведения и очистки временной шкалы и полноэкранного воспроизведения с использованием Mercury Transmit.
Здесь представлен список рекомендуемых графических карт для Adobe Premiere Pro.
Рекомендуется использовать графические процессоры с 4 ГБ видеопамяти, но объем памяти может варьироваться в зависимости от типа работы, выполняемой в Adobe Premiere Pro.
Общие требования к объему видеопамяти:
Для ВР необходим объем видеопамяти не менее 6 ГБ. При работе со стереоскопическими кадрами с более высоким разрешением (например, 8K x 8K), вам может понадобиться больший объем видеопамяти. При использовании графических процессоров NVIDIA убедитесь в том, что установлена последняя версия драйвера, поддерживающая CUDA 9.2.
Важно помнить о том, что покупка более старой видеокарты означает, что поддержка драйверов закончится раньше, чем для новой карты.
Установка модуля рендеринга в Adobe Premiere Pro
Установка модуля рендеринга в Adobe Media Encoder
В Adobe Media Encoder Модуль рендеринга также можно установить в правом нижнем углу панели Очередь.
Если параметр Mercury Playback Engine GPU Acceleration недоступен после обновления или переустановки Adobe Premiere Pro, выполните чистую установку драйверов графического процессора для решения этой проблемы.
Adobe Premiere Pro использует один графический процессор во время воспроизведения и нескольких графических процессоров для выполнения других задач, таких как Рендеринг точки входа и выхода и экспорт. Можно настроить CrossFire для представления нескольких графических процессоров в качестве одного логического ГП, и в этом случае Adobe Premiere Pro рассматривает его как один графический процессор.
В случае использования конфигурации с несколькими графическими процессорами (отличной от SLI или CrossFire) рекомендуется отключить функцию автоматического переключения графического процессора или графики на основе системы или драйвера.
Модуль Mercury Playback Engine, работающий на выделенном графическом процессоре, не используется для обработки всего, что связано с графическим процессором. Встроенный графический процессор может использоваться для определенных задач, таких как кодирование и декодирование определенных кодеков и действия пользовательского интерфейса, которые могут отображаться при отслеживании использования графического процессора.
Использование графического процессора зависит от нескольких факторов. Использование графического процессора при редактировании или рендеринге может быть максимальным в зависимости от количества используемых эффектов или функций с ускорением графического процессора и его вычислительных возможностей. Таким образом, мощный графический процессор, такой как NVIDIA RTX 2080, может работать быстрее, чем NVIDIA GTX 1060, но при этом показывать менее интенсивное использование. Это происходит потому, что он более мощный и ему может потребоваться меньше аппаратных ресурсов для обработки той же информации, что и NVIDIA GTX 1060 или другим графическим процессорам среднего класса. При использовании нескольких эффектов с ускорением графического процессора интенсивность его работы может сначала быть низкой, но затем увеличиться при использовании большего количества эффектов с ускорением графического процессора.
Это относится только к эффектам VR. Это сообщение появляется, когда у графического процессора недостаточно видеопамяти для обработки эффекта.
Кодирование с аппаратным ускорением
Intel® Quick Sync — это технология Intel®, которая использует специальные возможности обработки мультимедиа Intel® Graphics Technology для быстрого декодирования и кодирования, позволяя процессору выполнять другие задачи и повышать производительность. В настоящее время поддерживается только кодирование с помощью кодеков h.264 и HEVC (h.265). Эта функция доступна только в том случае, если используется процессор Intel® с поддержкой Intel® Quick Sync.
Здесь представлены системные требования для кодирования с аппаратным ускорением.
Включение и отключение аппаратного кодирования зависит от типа используемого процессора Intel®. Если поддерживаемый процессор не используется или технология Intel® Quick Sync отключена в BIOS, этот параметр может быть недоступен.
Чтобы его включить, выберите H.264/ HEVC из раскрывающегося списка форматов в разделе Настройки экспорта. Затем на вкладке Видео перейдите в Настройки кодирования и установите для параметра Производительность значение Аппаратное кодирование. При выборе Программного кодирования отключится аппаратное кодирование и Adobe Premiere Pro не будет использовать Intel® Quick Sync для кодирования медиафайлов (это может увеличить время рендеринга).
Включить аппаратное кодирование
При использовании аппаратного кодирования графический процессор может интенсивнее работать на встроенном процессоре Intel®, а не на выделенном ГП.
Поддерживаемые платформы кодеков
Кодирование: H.264/AVC, HEVC 4:2:0 до 4096×4096. Начиная с 10-го поколения процессоров Intel® Core™ и более поздних, кодирование HEVC поддерживается до 8192×8192.
Декодирование: H.264/AVC, HEVC 4:2:0 до 4096×4096 (часть содержимого 8K HEVC работает на процессорах Intel® Core™ 7-го поколения и более поздних)
Чтобы эта функция работала, требуется процессор Intel® с поддержкой Intel® Quick Sync. Проверьте, отвечает ли процессор Intel® требованиям для аппаратного кодирования. Если BIOS вашей системы поддерживает включение и отключение графического процессора Intel®, убедитесь, что он всегда включен, чтобы аппаратное кодирование работало. Некоторые системы, такие как Surface Studio, могут не включать графический процессор Intel®, что может привести к тому, что параметр аппаратного кодирования будет недоступен.
При наличии поддерживаемого ЦП Intel® с включенным ГП Intel® и невозможности использования аппаратного кодирования убедитесь, что ГП Intel® указан на вкладке диспетчера задач «Производительность» (только для Windows®). Если графический процессор Intel® отсутствует в списке, проверьте, включен ли он в диспетчере устройств, и обновите графические драйверы Intel® до последней версии.
Графический процессор Intel® указан в диспетчере задач и диспетчере устройств
Аппаратное ускорение в настройках кодеков для видео
Аппаратное ускорение, что такое? Стоит ли включать в настройках кодеков?
Решил установить новый K-Lite Codec Pack на свой компьютер. Всё как обычно: удаляешь предыдущий пакет, скачиваешь с сайта разработчика новый и устанавливаешь путём нажатия заветной кнопки «далее».
В процессе установки возникли вопросы, которые мне показались интересными (основы знал, но решил углубиться):
«Чем отличается аппаратное ускорение в процессе обработки видеопотока от программного? И стоит ли его включать в настройках кодеков?»
Второй момент: «Захотелось узнать про LAV VIDEO — NVIDIA CUVID и DXVA2 NATIVE — второй в контекстном меню выбора пакета кодеков K-Lite Codec Pack (для моей видеокарты GeForce GTX 750Ti). Что это за звери?»
Всю информацию, о которой здесь напишу, за малым исключением я почерпнул из хелпа к программе. Если нажать во время установки K-Lite Codec Pack на кнопочку Help в левом нижнем углу, то можно ознакомиться с оригиналом. В английском будучи ни шатко ни валко, попытаюсь передать смысл, пусть и читателям будет понятнее, с чем имеют дело во время настройки данного пункта K-Lite Codec Pack.
Всем известно, что цифровое видео, которое мы смотрим в любом из проигрывателей будь то на компьютере, телевизоре, DVD плеере находится в сжатом виде. Обычно в процессе декодирования цифрового видеопотока участвует центральный процессор (CPU). Такой эффект мы получаем при настройках по-умолчанию.
Если же задействовать аппаратную обработку, то в данный процесс включится видеочип (видеокарта). Это тот же процессор, только специализирован на обработке видеосигнала. В свою очередь включение в процесс декодинга видеокарты очень сильно разгружает центральный процессор.
Когда может возникнуть необходимость включения аппаратной обработки видео? В первую очередь — это очень слабый центральный процессор (или процессор, который постоянно тормозит при просмотре видео). В других случаях включать аппаратную обработку видео не рекомендуется — качество картинки от использования данной опции не станет. Более того, включение аппаратной обработки видео может привести к проблемам во время воспроизведения. Поэтому очень важно следить за актуальностью драйверов для видеокарты.
Пакет кодеков K-Lite Codec Pack 10.x.x имеет возможность работать со следующими типами алгоритмов:
Уже по названию можно определить принадлежность того или иного способа акселерации к конкретному производителю видеочипов. Первые три созданы MicroSoft и работают практически со всеми видеочипами, 4-ый только с чипами NVidia, 5-ый — с чипами Intel (Sandy Bridge, Ivy Bridge, Haswell и новее). При этом 1-ый и второй отличается тем, что старший (1) для Windows XP, второй — для Vista и выше).
Аппаратное декодирование
Про совместное использование нескольких видеокарт в программе Adobe Premiere Pro CC на сайте выложено много материала, но количество вопросов не снижается. Очередная попытка кратко объяснить как всё это работает и как настроить совместную работу нескольких видеокарт в версии программы Adobe Premiere Pro CC 2020.
Какое количество видеокарт в работе поддерживает программа Adobe Premiere Pro CC 2020?
Ответ: 6 видеокарт. Они распределяются следующим образом:
— Одна интегрированная видеокарта процессора Intel Core.
— Одна видеокарта которая будет отвечать за интерфейс (т.е. работу OpenGL) с отключенным движком CUDA/OpenCL.
— И четыре видеокарты могут работать в Multi-GPU режиме. Т.е. выполнять CUDA/OpenCL вычисления.
Можно ли для аппаратного декодирования использовать интегрированную видеокарту APU процессоров AMD?
Ответ: нет. Не подходят ни интегрированные видеокарты от AMD, ни распаянные видеокарты от ASPEED и т.д. Так как аппаратное декодирование использует Intel Media SDK и технологию Intel Quick Sync Video.
У меня стоит дискретная видеокарта, почему в настройках экспорта пункт «С аппаратным ускорением (Hardware Accelerated)» неактивен?
Ответ: аппаратное кодирование, как и декодирование, использует Intel Media SDK и технологию Intel Quick Sync Video и работает только на интегрированных видеокартах процессоров Intel Core. Для аппаратного кодирования с помощью дискретных видеокарт, необходимо использовать сторонние плагины.
*В версии программы Adobe Premiere Pro CC 2020 (v14.2) и выше, добавили аппаратное кодирование на дискретных видеокартах AMD и NVIDIA.
Теперь рассмотрим как включить и настроить типичную работу интегрированной видеокарты (iGPU) и дискретной видеокартой в программе Adobe Premiere Pro CC 2020.
Если у нас ноутбук, то две видеокарты по-умолчанию активны, и автоматически переключаются в зависимости от запущенного приложения. Есть и исключения, например: Lenovo Legion Y540-15IRH.
Если у нас ПК, то необходимо в BIOS включить интегрированную видеокарту для совместной работы с дискретной. Подключить монитор к дискретной видеокарте (чтобы она была главной и отвечала за OpenGL). Подробнее о настройках BIOS и подключении читаем здесь.
В систему необходимо поставить драйвера для интегрированной видеокарты, скачанные с официального сайта. После этого утилита GPU-Z видить интегрированную видеокарту, отображать актуальный драйвер (а не дефолтный операционной системы) и должна стоять галка перед пунктом OpenCL.
При запуске программы Adobe Premiere Pro CC 2020 может появиться окно System Compatibility Report (Отчёт о совместимости системы), которое проинформирует, если версия драйвера для интегрированной видеокарты ниже рекомендованной.
*Отключить это окно можно в настройках Общие (General), сняв галку перед пунктом Показать проблемы с совместимостью с системой при запуске (Show system compatibility issues at startup).
После запуска программы в настройках проекта доступно для выбора два аппаратных движка Mercury Playback Engine GPU Acceleration: CUDA и OpenCL. За последний отвечает интегрированная видеокарта, так как OpenCL ускорение для видеокарт nVidia было заблокировано в предыдущих версиях программы.
Теперь необходимо включить аппаратное декодирование с помощью интегрированной видеокарты в настройках программы. Выполняем команду: Изменить > Установки > Медиаконтент (Edit > Preferences > Media).
И проверяем наличие галки перед пунктом Включить декодирование с аппаратным ускорением (требуется перезапуск) / Enable hardware accelerated decoding (requires restart).
*В более поздних обновлениях эта команда стала называться: Включить аппаратное кодирование и декодирование с ускорением (требуется перезапуск) / Enable hardware accelerated encoding and decoding (requires restart).
Если галки нет, то ставим её и перезагружаем Adobe Premiere Pro CC 2020, чтобы изменения вступили в силу:
Теперь запускаем утилиту GPUSniffer и проверяем, чтобы дискретная видеокарта отвечала за OpenGL (т.е. была главной в системе, так как к ней подключён монитор/ы).
И в разделе GPU Computation Info была прописана интегрированная видеокарта, и не было никаких примечаний с * в начале.
Теперь переходим к видео на таймлайне, интегрированная видеокарта поддерживает аппаратное декодирование только форматов: H.264 и H.265 (HEVC). Но также на аппаратное декодирование может влиять частота кадров, величина битрейта и цветовая выборка. Например, нет поддержки декодирования видео H.264/HEVC с цветовой выборкой 422:
Цветовую выборку 422 аппаратно не могут декодировать и дискретные видеокарты, исключение это новая интегрированная графика Gen11 и Gen12 Xe, которая используется в 10-нм мобильных процессорах Intel Core 10-го и 11-го поколения Intel Ice Lake-U и Intel Tiger Lake-U. Но, только для H.265/HEVC видео.
10-битное H.265/HEVC видео с цветовой выборкой 4:2:2 снимают следующие камеры: Sony A7S III, Canon EOS R5, Canon EOS R6 и т.д.
Поэтому на видео которое собираемся декодировать на таймлайне, нажимаем правую кнопку мыши и выбираем Свойства (Properties). И проверяем его характеристики и можно ли такое видео аппаратно декодировать.
Проверяем чтобы штатный декодер ImporterMPEG работает аппаратно. В панели Debug Monitor (Ctrl+Alt+F12) в закладке ImporterMPEG следим за работой аппаратного ускорения (декодирования видео), кадры должны бежать напротив пункта HW Frames Decompressed.
*Если при нажатии комбинации клавиш Ctrl+Alt+F12 ничего не происходит, то читаем пункт 2.
Иногда аппаратное декодирование может включаться и на старых, не поддерживаемых интегрированных видеокартах. Как пример: Intel HD Graphics 4600. Утилита GPUSniffer показывает, что всё активно:
HW Frames Decompressed работает:
На ноутбуке был установлен драйвер Intel Graphics версии 20.19.15.4549.
*В версии программы Adobe Premiere Pro CC 2020 работают почти все старые интегрированные видеокарты (iGPU), начиная с Intel HD Graphics 4000 (Ivy Bridge).
Предпринимались различные попытки разобраться, что влияет на активацию интеграшки. Но отследить закономрености не удалось.
Для справки аналогичное ускорение в версии программы Adobe Premiere Elements 2020 работает с графикой Intel HD Graphics 2000 и выше. А для программа Adobe Premiere Pro CC это процессоры Broadwell (Intel Core 5-го поколения).
А аппаратное декодирование HEVC видео, было добавлено в процессоры Skylake (Intel Core 6-го поколения).
Есть ли аппаратное декодирование H.264 и HEVC видео с помощью дискретных видеокарт?
На данный момент для версии Adobe Premiere Pro 2020 (v14.3) нет такой штатной возможности. Но, есть бесплатный плагин Cinegy TurboCut который позволяет на видеокартах Nvidia с чипсетами Pascal/Turing реализовать аппаратное декодирование видео в программе Adobe Premiere Pro 2020.
*Также в Adobe Premiere Pro 2020 v14.3.2.20 Beta добавлены команды для активации штатного аппаратного декодирования видео на дискретных видеокартах AMD и Nvidia. Это следующие команды: ImporterMPEG.Feature.Enable_AMD_Decode, ImporterMPEG.Feature.Enable_AMD_Decode_Reset и ImporterMPEG.Feature.Enable_Nvidia_Decode.
Появилось окно Ожидание медиаданных, что делать?
Ожидание медиаданных (Media pending) может появиться при смене декодеров, или смене режимов декодирования.
Вот стандартный декодер для работы с 4K UHD H.264 видео, PF: YUV 420 MPEG4 Frame BiPlanar 8u 709 ImporterMPEG.
Идём в Консоль и активируем пункт: DS.ForceCPUOnly.
В настройках проекта получаем серое поле, Средство рендеринга: Только программное ускорение ядра Mercury Playback.
Движок сменится на Software Render System, но PF: останется прежним YUV 420 MPEG4 Frame BiPlanar 8u 709 ImporterMPEG.
Теперь в Консоли активируем пункт: GF.DisableAcceleratedDisplay.
Сменился и движок, на: GPU Mercury Playback (CUDA) и декодер, на следующий PF: VUYA 4444 8u 709. Но, картинка в окне Программа отображается.
Теперь наоборот, не устанавливаем, а снимаем в Console (Консоль) галку напротив пункта ImporterMPEG.UseBiPlanarPixelFormat_8b.
И получаем жёлтое окно: Ожидание медиаданных (Media pending).
CUDA Render System и PF: YUV 420 MPEG4 8U 709 ImporterMPEG.
.
Установка драйверов для интегрированной графики.
Убираем лаги при воспроизведении таймлайна.