Error con ffmpeg en android con android studio

Iniciado por $francisco, Mayo 13, 2015, 07:55:03 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 13, 2015, 07:55:03 PM Ultima modificación: Mayo 13, 2015, 08:08:20 PM por Gabriela
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.

Código: php

Working Directory: null Environment: null


Y tambien

Código: php
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?

Mayo 13, 2015, 08:13:06 PM #1 Ultima modificación: Mayo 13, 2015, 10:20:09 PM por Expermicid
@$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 @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta se pasará y sabrá la solución!

Saludos!
ANTRAX


La verdad estuve antes con eclipse, pero me fije que android studio es la "oficial" para crear aplicaciones android

Mayo 13, 2015, 11:57:32 PM #3 Ultima modificación: Mayo 14, 2015, 12:05:37 AM por Gus Garsaky
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
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
android.permission.WRITE_EXTERNAL_STORAGE



Saludos.

Al parecer son permisos que le falta a ffmpeg pero no me deja darselos.

Código: java
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;
            }
        }



Código: php
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


Código: php
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?.

¿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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Saludos.


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.