Медиакодеки
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Начиная с Android 10 (уровень API 29) и выше, в MediaCodecInfo
есть методы, которые раскрывают дополнительную информацию о кодеке:
-
isSoftwareOnly()
- Возвращает true, если кодек работает только в программном режиме. Программные кодеки не гарантируют производительность рендеринга.
-
isHardwareAccelerated()
- Возвращает true, если кодек ускорен аппаратно.
-
isVendor()
- Возвращает true, если кодек предоставлен поставщиком устройства, или false, если предоставлен платформой Android.
-
isAlias()
-
MediaCodecList
может содержать дополнительные записи для того же базового кодека, использующие альтернативные имена кодеков (псевдонимы). Этот метод возвращает значение true, если кодек в этой записи является псевдонимом другого кодека.
Кроме того, MediaCodec.getCanonicalName()
возвращает базовое имя кодека для кодеков, созданных через псевдоним.
Балл производительности отражает способность кодека обрабатывать видео с заданной высотой, шириной и частотой кадров. Например, балл производительности UHD_60
соответствует видео сверхвысокой чёткости (3840x2160 пикселей) с частотой 60 кадров в секунду.
Метод MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
возвращает список записей PerformancePoint
, которые кодек может визуализировать или захватить.
Проверить, покрывает ли одна точка PerformancePoint
другую, можно с помощью вызова PerformancePoint.covers(PerformancePoint)
. Например, UHD_60.covers(UHD_50)
возвращает true.
Для всех кодеков с аппаратным ускорением представлен список баллов производительности. Этот список может быть пустым, если кодек не соответствует даже самому низкому стандартному баллу производительности.
Обратите внимание, что устройства, обновлённые до Android 10 (уровень API 29) и выше без обновления образа поставщика, не будут иметь данных о точках производительности, поскольку эти данные берутся из HAL-базы поставщика. В этом случае getSupportedPerformancePoints()
возвращает значение null.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-08-27 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-08-27 UTC."],[],[],null,["Beginning with Android 10 (API level 29) and higher, there are methods in\n[`MediaCodecInfo`](/reference/android/media/MediaCodecInfo) that\nreveal more information about a codec:\n\n[`isSoftwareOnly()`](/reference/android/media/MediaCodecInfo#isSoftwareOnly)\n: Returns true if the codec runs in software only. Software codecs make no\n guarantees about rendering performance.\n\n[`isHardwareAccelerated()`](/reference/android/media/MediaCodecInfo#isHardwareAccelerated)\n: Returns true if a codec is accelerated by hardware.\n\n[`isVendor()`](/reference/android/media/MediaCodecInfo#isVendor)\n: Returns true if the codec is provided by the device vendor or false if provided\n by the Android platform.\n\n[`isAlias()`](/reference/android/media/MediaCodecInfo#isAlias)\n: `MediaCodecList` may contain additional entries for the same underlying codec\n using an alternate codec name/s (alias/es). This method returns true if the\n codec in this entry is an alias for another codec.\n\nIn addition,\n[`MediaCodec.getCanonicalName()`](/reference/android/media/MediaCodecInfo#getCanonicalName)\nreturns the underlying codec name for codecs created via an alias.\n\nPerformance Points\n\nA *performance point* represents a codec's ability to render video at a specific\nheight, width and frame rate. For example, the `UHD_60` performance point\nrepresents Ultra High Definition video (3840x2160 pixels) rendered at 60 frames\nper second.\n\nThe method\n[`MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()`](/reference/android/media/MediaCodecInfo.VideoCapabilities#getSupportedPerformancePoints())\nreturns a list of\n[`PerformancePoint`](/reference/android/media/MediaCodecInfo.VideoCapabilities.PerformancePoint)\nentries that the codec can render or capture.\n\nYou can check whether a given `PerformancePoint` covers another by calling\n[`PerformancePoint.covers(PerformancePoint)`](/reference/android/media/MediaCodecInfo.VideoCapabilities.PerformancePoint#covers(android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint)).\nFor example, `UHD_60.covers(UHD_50)` returns true.\n\nA list of performance points is provided for all hardware-accelerated codecs.\nThis could be an empty list if the codec does not meet even the lowest standard\nperformance point.\n\nNote that devices which have been upgraded to Android 10 (API level 29) and higher without\nupdating the vendor image will not have performance point data, because this\ndata comes from the vendor HAL. In this case, `getSupportedPerformancePoints()`\nreturns null."]]