Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: $francisco en Mayo 13, 2015, 07:55:03 PM

Título: Error con ffmpeg en android con android studio
Publicado por: $francisco en Mayo 13, 2015, 07:55:03 PM
Muy buens, estoy utilizando la libreria jave de java,  la he probado en eclipse y funciona, en android studio la incluyo y cuando la pruebo me lanza elbsiguiente error.


Working Directory: null Environment: null


Y tambien

Caused by: java.io.IOException: Permission denied

El caso es que le doi permisos de escritura y lectura en la sd pero segun he estado leyendo podria ser que no tenga permisos root o que no tenga instalado ffmpeg pero no lo tengo nada claro ya que jave viene con ffmpeg ¿cual es el error? ¿Como puedo hacerlo funcionar?
Título: Re:Error con ffmpeg en android con android studio
Publicado por: ANTRAX en Mayo 13, 2015, 08:13:06 PM
@$francisco
Porque usar Android Studio si puedes programar para moviles desde eclipse?
Viene una version para Android developers

De igual forma, estoy seguro de que @Gus Garsaky (https://underc0de.org/foro/index.php?action=profile;u=44299) se pasará y sabrá la solución!

Saludos!
ANTRAX
Título: Re:Error con ffmpeg en android con android studio
Publicado por: $francisco en Mayo 13, 2015, 08:34:37 PM
La verdad estuve antes con eclipse, pero me fije que android studio es la "oficial" para crear aplicaciones android
Título: Re:Error con ffmpeg en android con android studio
Publicado por: Gus Garsaky en Mayo 13, 2015, 11:57:32 PM
Eclipse ya no es lo recomendado para desarrollo Android, Android Studio es todo lo que necesitas, además de ser el oficial, está basado en el mejor IDE que puedes encontrar para Java: IntelliJ IDEA.

Generalmente, ese tipo de error suele ser porque efectivamente no tienes permisos root o puede ser porque ffmpeg no tiene los permisos adecuados. Si es ésto último, lo solucionas dándole los permisos a través de exec de Runtime:

Código (java) [Seleccionar]
String[] command = new String[]{"/system/bin/chmod", "744",
                                "/ruta/a/ffmpeg" };
Process process = Runtime.getRuntime().exec(command);


Si es lo primero puedes darle permisos root a tu app por tu root manager, como por ejemplo SuperSU.

Por último y poco probable es que hayas olvidado darle permisos en el manifest de tu aplicación para escribir en la SD:

Código (xml) [Seleccionar]
android.permission.WRITE_EXTERNAL_STORAGE


Saludos.
Título: Re:Error con ffmpeg en android con android studio
Publicado por: $francisco en Mayo 14, 2015, 07:45:45 PM
Al parecer son permisos que le falta a ffmpeg pero no me deja darselos.

Código (java) [Seleccionar]
view.addJavascriptInterface(new Object()
            {
                @JavascriptInterface
                public void performClick() throws Exception
                {
                    File source = new File("/sdcard/cancion.mp4");
                    File target = new File("target.mp3");
                    AudioAttributes audio = new AudioAttributes();
                    audio.setCodec("libmp3lame");
                    audio.setBitRate(new Integer(128000));
                    audio.setChannels(new Integer(2));
                    audio.setSamplingRate(new Integer(44100));
                    EncodingAttributes attrs = new EncodingAttributes();
                    attrs.setFormat("mp3");
                    attrs.setAudioAttributes(audio);
                    Encoder encoder = new Encoder();
                    encoder.encode(source, target, attrs);
                }
            },"Android");
            return true;
            }
        }



05-15 00:30:24.848    6348-6362/com.hackloper.probando W/System.err﹕ java.io.IOException: Error running exec(). Command: [/bin/chmod, 755, /data/data/com.hackloper.probando/cache/jave-1/ffmpeg] Working Directory: null Environment: null
05-15 00:30:24.860    6348-6362/com.hackloper.probando W/System.err﹕ at java.lang.ProcessManager.exec(ProcessManager.java:211)
05-15 00:30:24.861    6348-6362/com.hackloper.probando W/System.err﹕ at java.lang.Runtime.exec(Runtime.java:169)
05-15 00:30:24.862    6348-6362/com.hackloper.probando W/System.err﹕ at java.lang.Runtime.exec(Runtime.java:124)
05-15 00:30:24.863    6348-6362/com.hackloper.probando W/System.err﹕ at it.sauronsoftware.jave.DefaultFFMPEGLocator.<init>(DefaultFFMPEGLocator.java:85)
05-15 00:30:24.864    6348-6362/com.hackloper.probando W/System.err﹕ at it.sauronsoftware.jave.Encoder.<init>(Encoder.java:111)
05-15 00:30:24.865    6348-6362/com.hackloper.probando W/System.err﹕ at com.hackloper.probando.MainActivity$myWebClient$1.performClick(MainActivity.java:54)
05-15 00:30:24.865    6348-6362/com.hackloper.probando W/System.err﹕ at android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
05-15 00:30:24.865    6348-6362/com.hackloper.probando W/System.err﹕ at android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
05-15 00:30:24.865    6348-6362/com.hackloper.probando W/System.err﹕ at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113)
05-15 00:30:24.866    6348-6362/com.hackloper.probando W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:107)
05-15 00:30:24.866    6348-6362/com.hackloper.probando W/System.err﹕ at android.os.Looper.loop(Looper.java:194)
05-15 00:30:24.866    6348-6362/com.hackloper.probando W/System.err﹕ at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:930)
05-15 00:30:24.866    6348-6362/com.hackloper.probando W/System.err﹕ at java.lang.Thread.run(Thread.java:838)
05-15 00:30:24.867    6348-6362/com.hackloper.probando W/System.err﹕ Caused by: java.io.IOException: No such file or directory
05-15 00:30:24.867    6348-6362/com.hackloper.probando W/System.err﹕ at java.lang.ProcessManager.exec(Native Method)
05-15 00:30:24.868    6348-6362/com.hackloper.probando W/System.err﹕ at java.lang.ProcessManager.exec(ProcessManager.java:209)
05-15 00:30:24.868    6348-6362/com.hackloper.probando W/System.err﹕ ... 12 more


shell@android:/ $ chmod 777 /data/data/com.hackloper.probando/cache/jave-1/ff
mpeg


me deja acceder hasta cache, a partir de cache no me deja en "jave-1" me dice acceso denegado.

¿como podría darle permisos de ejecución? a ser posible que no haga falta rootear el móvil, sería algo molesto que una aplicación para pasar a mp3 necesite un movil rooteado o ¿saben alguna otra alternativa para convertir videos y audios?.
Título: Re:Error con ffmpeg en android con android studio
Publicado por: Gus Garsaky en Mayo 15, 2015, 09:28:27 AM
¿Estás seguro que es la ruta correcta? Fíjate lo que dice el rastreo de pila:

CitarW/System.err﹕ java.io.IOException: Error running exec(). Command: [/bin/chmod, 755, /data/data/com.hackloper.probando/cache/jave-1/ffmpeg]
W/System.err﹕ Caused by: java.io.IOException: No such file or directory

He aquí la importancia de saber interpretar las excepciones y el rastreo de pila.

Si no tienes permisos root, creo que poco vas a poder hacer. He encontrado una forma de hacerlo funcionar sin permisos root que se describe en StackOverFlow: FFMPEG on Android (http://stackoverflow.com/questions/4725773/ffmpeg-on-android/4820282#4820282)


Saludos.

Título: Re:Error con ffmpeg en android con android studio
Publicado por: $francisco en Mayo 16, 2015, 12:52:46 PM
Muchas gracias por la respuesta, no entiendo mucho, pero creo que lo que dice es que tengo que guardarlo en la sd y ejecutarlo desde hay, intentaré buscar mas información sobre esto.