Как определить аппаратное ускорение Android H.264

Большое количество, хотя и не все, устройств Android поддерживают аппаратное ускорение видеокодека H.264, но не кодеки VP8/VP9. Чтобы обеспечить более качественный пользовательский опыт, мы хотели бы выбрать кодек, аппаратно ускоряемый, когда это возможно. Следовательно, хотелось бы, чтобы во время выполнения обнаруживалось, имеет ли конкретное устройство поддержку аппаратного ускорения H.264 или нет, и на основе этого будут устанавливаться конкретные кодеки, которые используются в SDP для согласования сеанса соединения peer-соединения webRTC. То есть, если H.264 поддерживается с помощью аппаратного обеспечения, то он будет установлен в качестве кодека с более высоким приоритетом по сравнению с VP8/VP9. Любые мысли по этому поводу будет принята с благодарностью.

2 ответа

Решение

Используйте API MediaCodecList для перебора доступных кодеров и декодеров. Кодеры, чье имя начинается с OMX.google. являются кодеками SW - любой другой кодек можно более или менее считать кодеком HW. Самый простой, вероятно, использовать findEncoderForFormat (а также findDecoderForFormat) и посмотрите, какое имя это возвращает. Если вам нужно больше подробностей, вы можете перебрать список вручную.

Согласно комментарию Джастина Уберти, вы получите H.264 в Android WebRTC, только если на устройстве есть кодировщик HW. Таким образом, вы можете просто установить WebRTC на H.264 - если есть кодер HW, будет использоваться HW H.264. Если нет, то это VP8/VP9.

Другие вопросы по тегам