Aceleración de Hardware de decodificación de vídeo H. 264 en android antes de Jelly Bean
-
21-12-2019 - |
Pregunta
Estoy trabajando en una conferencia de video del proyecto.Estábamos usando el software de códec para codificar y decodificar de fotogramas de vídeo que va a hacer bien para resoluciones más bajas( hasta 320p).Tenemos planeado para nuestra aplicación para resoluciones más altas también de hasta 720p.Me enteré de que la aceleración de hardware de hacer este trabajo bastante bien.
Como el codec de hardware de la api de códecs Multimedia está disponible a partir de Jelly Bean en adelante me lo han utilizado para codificar y decodificar, y están trabajando bien.Pero mi aplicación es compatible a partir de 2.3 .Por lo que necesito un acelerado por hardware de decodificación de vídeo H. 264 marcos de 720p a 30fps.
En la investigación llegó a través de la idea de utilizar la OMX codec modificando el miedo escénico marco.Yo había leído que el decodificador de hardware H. 264 está disponible a partir de 2.1 y el codificador está ahí desde el 3.0.He pasado por muchos artículos y preguntas en este sitio y me confirmó que yo pueda seguir adelante.
Yo había leído sobre el miedo escénico de la arquitectura aquí -la arquitectura y aquí - stagefright cómo funciona
Y he leído sobre OMX codec aquí - uso-android-hardware-decodificador-con-omxcodec-en-ndk.
Estoy teniendo un inicio de problemas y algunas confusiones en su aplicación.Me gustaría tener algo de información sobre ella.
- Para el uso de la OMX codec en mi código debo construir mi proyecto con todo el árbol de código fuente de android o puedo hacer mediante la adición de algunos archivos de AOSP de la fuente(si sí, que todos).
- ¿Cuáles son los pasos desde cero que debo seguir para lograrlo.
Alguien puede darme una pauta en este
Gracias...
Solución
El mejor ejemplo para describir la integración de OMXCodec
en los nativos de la capa es la utilidad de línea de comandos stagefright
como se puede observar aquí en GingerBread
sí.Este ejemplo muestra cómo un OMXCodec
se crea.
Algunos puntos a tener en cuenta:
La entrada a
OMXCodec
debe ser modelado como unMediaSource
y, por lo tanto, usted debe asegurarse de que su aplicación se encarga de este requisito.Un ejemplo de creación de unMediaSource
basada en el origen se puede encontrar enrecord
archivo de la utilidad comoDummySource
.La entrada al decodificador es decir,
MediaSource
debe proporcionar los datos a través de laread
método y, por lo tanto, su aplicación debe proporcionar fotogramas individuales para cadaread
de la llamada.El decodificador puede ser creado con
NativeWindow
para el buffer de salida de la asignación.En este caso, si desea acceder al buffer de la CPU, probablemente, usted debe referirse a esta consulta para obtener más detalles.