2012-06-06 6 views
5

Estoy intentando construir la biblioteca de FFmpeg para usar en mi aplicación de Android con el NDK. La razón de esto es porque estoy usando la función nativa de captura de video en Android porque realmente no quiero escribir mi propio videograbador. Sin embargo, la captura de video nativo solo permite una codificación de alta calidad o una codificación de baja calidad. Quiero algo intermedio, y creo que la solución es usar la biblioteca FFmpeg para volver a codificar el video de alta calidad para que sea más liviano.Creando FFmpeg para que Android use los argumentos de línea de comando

Hasta ahora he podido construir la biblioteca FFmpeg de acuerdo con esta guía: http://www.roman10.net/how-to-build-ffmpeg-for-android/ y con algunos ajustes he podido hacer que funcione.

Sin embargo, todo lo que he encontrado parece ser sobre escribir tu propio codificador, lo que me parece excesivo. Todo lo que realmente quiero hacer es enviar una cadena en formato de línea de comando a la función main() de FFmpeg y volver a codificar mi video. Sin embargo, parece que no puedo entender cómo construyo FFmpeg para darme acceso al método principal. Encontré esta publicación: Compile ffmpeg.c and call its main() via JNI que enlaza a un proyecto que hace lo que quiero más o menos, pero por mi vida no puedo entender qué está pasando. También parece que está compilando más de lo que quiero, y realmente me gustaría mantener mi aplicación lo más ligera posible.

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

+0

Me interesa lo mismo, pero para la captura de audio en lugar de video. Se aplican principios similares, por lo que estoy agregando una recompensa a su pregunta. – Brad

+0

@Brad, ¿Puedes dar algunas aclaraciones ?: Has podido construir ffmpg usando la guía anterior, pero quieres averiguar cómo usar realmente la biblioteca creada llamándola desde el código java y pasándole algunos parámetros para codificarla. Es ese entendimiento correcto? – av501

+0

@ av501, esperaba utilizar la entrada Alsa de FFMPEG para capturar audio desde el micrófono en un dispositivo Android. Creo que esto está en la línea de lo que Zargoon quiere hacer con la captura de video desde la cámara. Sin embargo, esta es la pregunta de Zargoon, por lo que si esas dos cosas son realmente diferentes, responda específicamente a lo largo de las líneas de captura de video. – Brad

Respuesta

1

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

  1. La 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 extraer de esta manera:

    Intent CommandLine = this.getIntent(); 
    Uri uri = CommandLine.getData(); 
    
  2. puede leer los parámetros de archivo se crea en algún lugar de una tarjeta SD y pasar el que FFmpeg.

+0

hey. también quiero ejecutar comandos ffmpeg en Android. Cómo puedo lograrlo. puedes por favor guiar? –

+1

De esta forma podemos llamar al método main() que se encuentra en la carpeta FFMPEG en jni y pasar nuestro comando en nuestro archivo C nativo. ¿Puedes compartir tu conocimiento para que también nos pueda ayudar ... –

Cuestiones relacionadas