2013-08-13 5 views
0

Я работаю над Android-приложением, где хочу создать видео из списка статических изображений . После выполнения поиска в Интернете, это сделало меня понял, что использование «FFMPEG» - это способ сделать это: сделано. Поэтому я завладел этим сайтом: https://github.com/guardianproject/android-ffmpeg-java откуда я загрузил библиотеку C и оболочку Java. Я смог скомпилировать библиотеку C - конечно, не так, как была изложена инструкция - но все еще я смог получить исполняемый файл «ffmpeg» под именем /external/android-ffmpeg/ffmpeg. Я скопировал этот исполняемый файл в моей текущей директории, а затем скопировал его в каталог под Android , где мое приложение может получить к нему доступ. Тогда я назвал предоставленный Java обертку, но я вижу некоторые ошибки в файле журнала, как следует:Android FFMPEG: Не удалось выполнить ffmpeg из кода Java

08-13 11:55:37.848: D/FFMPEG(29598): /data/data/com.sample/app_bin/ffmpeg -y -loop 1 -i /storage/emulated/0/usersnapshot/ffmpeg/image%03d.jpg -r 25 -t 2 -qscale 5 /storage/emulated/0/video/snapshot-video.mp4 
08-13 11:55:37.898: I/ShellCallback : shellOut()(29598): /data/data/com.sample/app_bin/ffmpeg[1]: syntax error: '(' unexpected 
08-13 11:55:37.938: I/ShellCallback : processComplete()(29598): 1 

И следующий фрагмент кода (где targetDirectoryForFFMPEG = каталог, в котором хранятся изображения):

FfmpegController ffmpegController = new FfmpegController(this, targetDirectoryForFFMPEG); 
String out = videoOutPutFile.getPath(); 
     MediaDesc mediaIn = new MediaDesc(); 
     mediaIn.path = targetDirectoryForFFMPEG+"/image%03d.jpg"; 
     mediaIn.videoFps = "25"; 
     ffmpegController.convertImageToMP4(mediaIn, 2, out,new ShellCallback() { 

      @Override 
      public void shellOut(String shellLine) { 
       Log.i("ShellCallback : shellOut()", shellLine); 
      } 

      @Override 
      public void processComplete(int exitValue) { 
       Log.i("ShellCallback : processComplete()", exitValue+""); 
      } 
     }); 

Неужели кто-то реализовал это раньше? Если да, можете ли вы указать мне, что я делаю неправильно? При необходимости я предоставит больше информации.

+0

Проверьте разрешения для исполняемого файла 'ffmpeg'. – shrm

ответ

0

У вас есть корень на устройстве?

Mount '/ data', а затем введите свою команду ffmpeg в оболочке и проверьте, не является ли ошибка одинаковой.

Попробуйте использовать оболочку для тестирования различных командных выражений.

Попробуйте использовать «ffmpeg» только с одним входным файлом. Посмотрите, производят ли эти команды ожидаемый результат.

Мое дикое предположение заключалось в том, что существует проблема с вызовом 'ffmpeg.main()', который относится к деталям вашей сборки.

+0

Благодарим вас за ответ. Я определенно попробую то, что вы сказали, но возможно ли иметь ffmpeg exec без компиляции кода C/C++? Почему я спросил, потому что я не знаю C/C++, и я хочу быть уверенным, что я ничего не делаю неправильно. – Raj

+0

ffmpeg вряд ли будет работать на устройстве, если вы не перекрестите себя с правильным ffmpeg.config() для вашего конкретного оборудования ... –

0

Ваш ffmpeg не может быть скомпилирован правильно для руки. Я получал ту же ошибку, когда не использовал правильно скомпилированный ffmpeg.

Смежные вопросы