Можно ли установить программный кодек H.264 в собственные библиотеки Google WebRTC Android?

Согласно этому сообщению (" Как определить возможности аппаратного ускорения Android H.264"), а также личному опыту, последние собственные нативные библиотеки Android для WebRTC ('org.webrtc:google-webrtc:1.0.23546') не поддерживают H.264, если только для этого есть аппаратный декодер.

Пока что это влияет только на меня при использовании эмулятора, но я понимаю, что на некоторых устройствах он не будет работать, так что это может быть большой проблемой.

У Cisco есть свой программный декодер H.264, доступный по адресу https://github.com/cisco/openh264 и я хотел бы знать, есть ли способ использовать это или что-то еще для установки программного обеспечения H.264 таким образом, чтобы работать с WebRTC на устройствах, которые не имеют аппаратного декодирования.

Кроме того, я не могу найти матрицу поддержки для аппаратного декодирования H.264 на устройствах.

1 ответ

Решение

Может быть сделано с помощью JCodec. Google предоставляет доступ к созданию пользовательского декодера на Java.

- Decoder.decodeFrame уже в формате YUV

- Данные для Y,U,V можно найти в frame.getPlaneData (0/1/2)

- StrideY/U/V - это frame.getWidth() >> frame.getColor(). CompWidth [planeIndex]

- В соответствии с заголовком в "org.jcodec.common.model.Picture" данные сдвинуты на 128. Необходимо настроить (byte) (a[i] + 128).

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