Argumentos al llamar aplicacion externa desde java (Solucionado)

Imagen de JLFM
0 puntos

Hola, estoy haciendo (mas bien adaptando) una aplicación sencilla en java que usa mencoder para convertir videos h264 de 1280*720 a XviD de 720*400, originalmente esta aplicación estaba escrita para windows, pero quise portarla a Linux

El problema que tengo es este, al armar el string que se pasa como argumento al método exec(), se añaden comillas a las rutas de los archivos, para que no tenga problemas con los espacios asi, quedando el string asi:

mencoder "/home/ben/Videos/fma1.mp4" -of avi -nosound -vf scale=720:400 -ovc xvid -xvidencopts pass=1:threads=2 -o "/home/ben/Videos/fma1.mp4.avi"

Si pongo esta linea en la Terminal, funciona sin problemas
Sin embargo, al correr el programa, mencoder tira este error

WARNING: OUTPUT FILE FORMAT IS _AVI_. See -of help.
File not found: '"/home/ben/Videos/fma1.mp4"'
Failed to open "/home/ben/Videos/fma1.mp4".
Cannot open file/device.

Ahora, he probado quitando las comillas, y entonces si funciona y comienza a convertir, pero no funciona si el archivo tiene espacios en el nombre, o hay espacios e cualquier otra parte de la ruta, haciendo poco práctico su uso.
Me di cuenta de que en la version original, que era para windows, la instruccion iniciaba asi

cmd /C 

Supongo que esto mandaba la instruccion a ejecutarse en simbolo del sistema, asi que busque un poco e intente hacer lo mismo, proponian usar /bin/bash, xterm...
Los shell (bash, sh, etc) no me reconocieron la instrucción completa, xterm si, pero abria una ventana externa y no devolvia nada a al programa.

Alguna sugerencia?

Imagen de slap
+1
0
-1

¿Puedes poner aquí la línea de código que forma el string y la que hace la llamada a exec()?

Saludos.


0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://7grados.injiniero.es

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de JLFM
+1
0
-1

Gracias por responder, ya solucione esto de alguna manera, en si son varias líneas de código las que iban armando los strings, pues eran uno para la primera pasada y otro para la segunda

la solución que encontré fue que en vez de juntar todos los argumentos en un solo String, los fui añadiendo uno a uno a un arreglo, que es otra manera de llamar a un programa externo con el método exec(), y así ya no tuve problemas con los espacios en la ruta al archivo

Gracia de todos modos

+1
0
-1