| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Проблема с Runtime.Exec !!! |
| Автор: Nord2008 3.10.2008, 11:14 |
| Привет всем! У меня проблема--немогу запустить программу на выполнение в Linux из кода Java методом Runtime.Exec! Вот сама команда: ffmpeg -i "путь_до_клипа_для_перекодировки_с_!!!пробелами!!!_в_названии" -acodec libfaac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x240 -title X "путь_и_название_клипа_на_выходе_с_!!!пробелами!!!" Вот оригинал:ffmpeg -i "/home/white/Media/Video/Clips/Akon - Don't matter.avi.mp4" -acodec libfaac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x240 -title X "/home/white/Media/Video/Clips/Akon - Don't matter.avi.coded.mp4" Эта команда незапускается на выполнение,хотя из консоли в Linux'e всё хорошо работает! Подскажите как запустить её на выполнение,что б всё работало,а то столько дней мучаюсь-и ничего |
| Автор: Hroft 3.10.2008, 12:33 | ||
Скорее всего интерпретатор не указываете (sh, bash) |
| Автор: Nord2008 3.10.2008, 12:55 |
| Все равно не запускается |
| Автор: Nord2008 3.10.2008, 13:23 | ||
Запускаю вот эту строку:
|
| Автор: Krivoy 3.10.2008, 13:28 |
| ИМХО занеси это все в скрипт и выполняй его. |
| Автор: Nord2008 3.10.2008, 13:32 | ||
а как тогда менять названия и пути к клипам\фильмам?? Парсить и менять каждый раз файл? |
| Автор: LSD 3.10.2008, 14:14 |
Ну начнём с того, что эта строка не скомпилируется И почему путь в Linux ты указываешь через обратный слэш? И вообще неплохо бы писать с каким кодом завершился запуск, или было исключение и какое, или что написал в stdout/stderr. |
| Автор: Nord2008 3.10.2008, 14:24 | ||
Вот часть программы,отвечающая за запуск:
сейчас пишет: "process hasn't exited" |
| Автор: LSD 3.10.2008, 14:27 |
| Уже веселей (по крайней мере слеши заэскейплены Но все же почему пути так странно указаны? |
| Автор: Nord2008 3.10.2008, 14:29 |
| В каком смысле странно? |
| Автор: Дрон 3.10.2008, 14:48 | ||
Я бы попробовал вызывать не одной строкой, а массивом, сделав каждый параметр отдельным элементом.
По идее так решается проблема с пробелами в путях, но может есть ещё какая-то Linux-специфика, я не знаю. |
| Автор: Nord2008 3.10.2008, 15:01 | ||
| блин,извините,но ничего что то неподходит.... Вот код который сейчас запускаю и ничего:
|
| Автор: LSD 3.10.2008, 16:17 |
В Linux в качестве разделителя пути используется прямой слэш /, а не обратный \, как у тебя. |
| Автор: Nord2008 5.10.2008, 18:24 |
| Всё равно не получается так! |
| Автор: Krivoy 6.10.2008, 08:17 | ||||||||
Пути можно задавать как параметры к запуску и обращаться к ним как $1 $2 и т.д. У тебя --- String[] cmd ={"ffmpeg","-i", ..... и т.д. --- не задумывался что выполняться будет ffmpeg-i .... и т.д. - думаю врядли такая команда есть Образец скрипта:
Ну к примеру назевёшь ты его tydysh.sh и соответственно первым параметром запуска первый путь, вторым второй ---
Еще раз обращаю внимание на пробелы! Ну и на путь до скрипта. |
| Автор: Nord2008 6.10.2008, 09:23 |
| Спасибо большое! Попробую!(думаю что это выход! |
| Автор: Nord2008 6.10.2008, 10:17 |
| Ещё раз всем СпАсИбО! |
| Автор: SoulKeeper 6.10.2008, 21:02 |
| На прямую ffmpeg дёргать можно, передавая ему параметры. Юзали его на проекте. Что у дэвов под виндой, что на сервере под линухом - работало идеально. |
| Автор: Nord2008 7.10.2008, 19:32 | ||
Напиши поподробнее как делали! |
| Автор: SoulKeeper 8.10.2008, 11:20 | ||
getCodecPath() возвращает путь к ffmpeg, getAttachmentsDirectory() рабочую папку для нового процесса. |
| Автор: Nord2008 8.10.2008, 15:48 |
| Спасибо большое за помошь! Но подскажи что-за прогцедура getCodecPath() (если можете,и вас незатруднит распишите её) И ещё вопросик: у вас прога склеивает видеофайл и звуковой в оди flv ? |
| Автор: SoulKeeper 8.10.2008, 21:28 |
| Да, склеивает. getCodecPath() возвращает путь к ffmpeg. Берется из конфига, т.к. на линухе и винде разный. |
| Автор: Nord2008 10.10.2008, 17:53 | ||
Привет. Вот мой код:
|