Conversión de imágenes en vídeo

¿cómo puedo convertir imágenes a vídeo sin utilizar FFmpeg o JCodec , sólo con android MediaCodec . Las imágenes para video son archivos de mapa de bits que pueden ser ARGB888 o YUV420 (mi elección). Lo más importante es que el video tiene que ser jugable en dispositivos Android y la API máxima es 16. Sé todo sobre API 18 MediaMuxer y no puedo usarlo.

Por favor, ayúdame, estoy atascado en esto por muchos días. (JCodec a lento, y FFmpeg muy complicado de usar).

No existe una forma sencilla de hacerlo en la API 16 que funciona en todos los dispositivos.

Encontrará problemas con la alineación del búfer , los espacios de color y la necesidad de utilizar diferentes diseños YUV en diferentes dispositivos .

Considere la cuestión de la alineación de búfer. En los dispositivos pre-API 18 con SOCs de Qualcomm, se tuvo que alinear los planos CbCr con un offset de 2K desde el inicio del búfer. En la API 18, todos los dispositivos utilizan el mismo diseño; esto se hace cumplir por las pruebas CTS que se agregaron en Android 4.3.

Incluso con API 18 todavía tiene que ejecutar tiempo de detección si el codificador quiere planar o semi-planar valores. (Probablemente no sea relevante para su situación, pero ninguno de los formatos YUV emitidos por la cámara son aceptados por MediaCodec .) Nota no hay entrada RGB a MediaCodec .

Si la portabilidad no es una preocupación, es decir, que está apuntando a un dispositivo específico, su código será mucho más simple.

Hay fragmentos de código en las páginas de SO enlazadas anteriormente. El ejemplo "oficial" más cercano es el buffer-to-buffer / buffer-to-surface tests in EncodeDecodeTest . Estas son pruebas API 18, lo que significa que no realizan la danza "si QC y API16 cambian la alineación del búfer", pero sí muestran cómo hacer la detección planar o semiplanar. No incluye un convertidor de color RGB-a-YUV, pero hay ejemplos de tales alrededor de la web.

En el lado positivo, la salida del codificador parece estar bien en cualquier dispositivo y versión de la API.

La conversión del flujo crudo H.264 a un archivo .mp4 requiere una biblioteca de terceros, ya que como se observó MediaMuxer no está disponible. Creo que algunas personas han instalado ffmpeg como una utilidad de línea de comandos y lo ejecutó de esa manera (tal vez como esto ?).

  • Capturar vídeo con datos de superposición (o marca de agua)?
  • Actividad de código abierto de Android para que el usuario seleccione / cree un medio?
  • Streaming de vídeo con peerjs webrtc de android webview es demasiado lento
  • Los vídeos que no se reproducen en Android en un estado sin conexión cuando se usa appcache
  • Video androide, escuchar sonido pero no video
  • Trabajar con ffmpeg en Xamarin Android
  • Extraer todos los marcos de video en Android
  • Android MediaCodec: Reduce el tamaño del video mp4
  • ¿Hay una manera de hacer que VideoView siga jugando en segundo plano en la aplicación para Android?
  • Android: Encontrando audio y video usando MediaCodec
  • ¿Cómo grabar vídeo con sonido específico mediante programación en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.