you want traduccion the predeterminado please español entry developer debug advanced android video h.264 hardware-acceleration stagefright

want - ¿Cómo usar la descodificación de video acelerada por hardware en Android?



opengl skia o predeterminado (3)

Necesito decodificación H.264 acelerada por hardware para un proyecto de investigación, para probar un protocolo autodefinido.

Como busco en la web, he encontrado algunas formas de realizar decodificación de video acelerada por hardware en Android.

  1. Utilice ffmpeg libstagefright ( descripción general de libstagefright ) o use libstagefright en el sistema operativo directamente, como here .
  2. Use OpenMax en una plataforma de hardware específica. como aquí sobre el dispositivo Samsung y aquí sobre la serie Qualcomm Snapdragon
  3. Algunas personas mencionaron PVplayer ,

Algunas personas "say" libstagefright es la única forma en que los chicos de Qualcomm han tenido éxito obviamente.

Actualmente no estoy seguro de qué manera podría funcionar . Estoy un poco confundido ahora. Si todo pudiera funcionar, ciertamente preferiría un método independiente del hardware.

Como he probado algunos reproductores de video de su aceleración de H / W con Galaxy Tab 7.7 (3.2 y Enxyos), VLC, Mobo, Rock, vplayer, rock y mobo funcionan bien, VLC no funciona, vplayer parece tener una representación error que cuesta su rendimiento.

De todos modos, hice una ''operación'' en Rockplayer y eliminé todas sus .so libs en data / data / com.redirecting / rockplayer, y las fallas en la decodificación de software mientras la decodificación hw funciona bien. Me pregunto cómo lo hicieron. Me parece que la aceleración de hw podría ser independiente de las plataformas de hardware.

¿Alguien puede resolver este problema? ¿O proporciona alguna referencia con información adicional o mejores detalles?



Para responder a la pregunta anterior, déjame presentarte algunos conceptos relacionados con Android

OpenMAX Android utiliza OpenMAX para la interfaz de códec. Por lo tanto, todos los códecs nativos (hardware acelerado o no) proporcionan una interfaz OpenMAX. Esta interfaz es utilizada por StageFright (marco de jugador) para decodificar medios usando códec

NDK Android permite que las aplicaciones Java interactúen con las bibliotecas nativas C / C ++ subyacentes utilizando NDK. Esto requiere el uso de JNI (Java Native Interface).

Ahora viene su pregunta How to tap native decoder to decode raw video bitstream?

En la versión Android 4.0 y versiones inferiores, Android no proporcionaba acceso a los decodificadores de video subyacentes en la capa Java. Debería escribir un código nativo para interactuar directamente con el decodificador OMX. Aunque esto es posible, no es trivial, ya que necesitaría saber cómo funciona OMX y cómo asignar este OMX a la aplicación utilizando NDK.

En 4.1 (versión de Jelly Bean), Android parece proporcionar acceso a decodificadores acelerados por hardware a nivel de aplicación a través de las API de JAVA. Más detalles sobre las nuevas API en http://developer.android.com/about/versions/android-4.1.html#Multimedia


Use ExoPlayer ( github ).

Es un proyecto de código abierto patrocinado por Google que reemplaza el MediaPlayer de la plataforma. Cada componente de la canalización es extensible, incluida la fuente de muestra (cómo se extraen las tramas H.264 de su protocolo personalizado) a la representación (a una superficie, textura de superficie, etc.).

Incluye una buena aplicación de demostración que muestra el uso .