Можно ли установить программный кодек 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).