Construyendo FFmpeg para Android para usar argumentos de línea de comandos

Estoy intentando construir la biblioteca de FFmpeg para utilizar en mi androide app con el NDK. La razón de esto es porque estoy utilizando la característica de captura de vídeo nativa en android, porque realmente no quiero escribir mi propia grabadora de vídeo. Sin embargo, la captura de vídeo nativa solo permite la codificación de alta calidad o la codificación de baja calidad. Quiero algo intermedio, y creo que la solución es utilizar la biblioteca FFmpeg para volver a codificar el vídeo de alta calidad para ser más ligero.

Hasta ahora he sido capaz de construir la biblioteca FFmpeg de acuerdo con esta guía: http://www.roman10.net/how-to-build-ffmpeg-for-android/ y cuáles son algunos de los ajustes que he podido obtener trabajar.

Sin embargo, todo lo que he encontrado parece ser sobre la escritura de su propio codificador, que parece como una excesiva para mí. Todo lo que realmente quiero hacer es enviar una cadena en formato de línea de comandos a la función main () de FFmpeg y volver a codificar mi video. Sin embargo, no puedo imaginar cómo construyo FFmpeg para darme acceso al método principal. He encontrado este post: Compile ffmpeg.c y llame a su main () a través de JNI que enlaza a un proyecto haciendo lo que quiero más de menos, pero para la vida de mí no puedo entender lo que está pasando. También parece que está compilando más de lo que quiero, y me gustaría realmente mantener mi aplicación lo más ligera posible.

Alguna dirección adicional sería extremadamente útil. Gracias.

En Android NDK no hay main () en su aplicación en el sentido típico, por lo que no puede hacer lo que quiere directamente. Sin embargo, todavía puede llamar a la principal () de FFmpeg usted mismo y proporcionar todos los parámetros necesarios para ello. Aquí hay 2 posibilidades para obtener los parámetros:

  1. Actividad de Android recibe un intento después de la creación. Puede pasar los parámetros a través de la intención al iniciar su actividad y luego extraerla de la siguiente manera:

    Intent CommandLine = this.getIntent(); Uri uri = CommandLine.getData(); 
  2. Puede leer los parámetros del archivo que cree en algún lugar de una tarjeta SD y pasarlo a FFmpeg.

El segundo contestador parece tener su respuesta. Por favor, consulte este enlace. ¿Puede FFmpeg ser utilizado como una biblioteca, en lugar de un programa independiente?

  • ¿Cómo puedo ejecutar la línea de comandos FFMPEG y aceptar múltiples tuberías (vídeo y audio) sin bloquear en la primera entrada?
  • ExoPlayer de Android stream mp3 a través de HTTP
  • Implementación de un gráfico de filtro de entrada múltiple con la librería Libavfilter en Android NDK
  • Compresión rápida de video en Android
  • UnsatisfiedLInkError Vinculación a FFMPEG con NDK
  • Cómo reducir el tamaño de mp4 mediante el uso de FFMPEG lib en android
  • Combinar dos archivos .m4a o convertir archivos .wav a m4a
  • Ffmpeg Build ¿La salida no está demostrando?
  • Compilación de FFmpeg 2.3 con Android NDK r10
  • Ffmpeg para un android (usando el tutorial: "ffmpeg y Android.mk")
  • Cómo cargar un archivo de vídeo (ubicado en la carpeta de activos) en NDK?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.