2014-10-07 68 views
2

我在互聯網上搜索,我發現這個名爲「ffmpeg」的庫,它說它能夠將GIF轉換爲MP4。我嘗試過,但沒有成功,並獲得例外。如何將GIF轉換爲Mp4有可能嗎?

https://github.com/guardianproject/android-ffmpeg-java

如果有人知道如何GIF轉換爲MP4的Android平臺,請幫助我。感謝

編輯

這就是我所做的使用上面的ffmpeg的lib

String path = Environment.getExternalStorageDirectory() 
       + "/gif/wall.jpg"; 
     String tmp = Environment.getExternalStorageDirectory() + "/gif/tmp"; 
     System.out.println(path); 
     Clip clip = new Clip(path); 
     File f = new File(tmp); 
     try { 
      f.createNewFile(); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     try { 
      FfmpegController controller = new FfmpegController(this, f); 
      controller.convertImageToMP4(clip, 5, 
        Environment.getExternalStorageDirectory() 
          + "/gif/mynew.mp4", new ShellCallback() { 

         @Override 
         public void shellOut(String shellLine) { 
          // TODO Auto-generated method stub 

         } 

         @Override 
         public void processComplete(int exitValue) { 
          // TODO Auto-generated method stub 

         } 
        }); 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

得到以下異常

10-09 14:39:59.638: W/System.err(19460): java.lang.NullPointerException: taintedCommand[7] == null 
10-09 14:39:59.638: W/System.err(19460): at java.lang.ProcessManager.exec(ProcessManager.java:184) 
10-09 14:39:59.638: W/System.err(19460): at java.lang.ProcessBuilder.start(ProcessBuilder.java:195) 
10-09 14:39:59.638: W/System.err(19460): at org.ffmpeg.android.FfmpegController.execProcess(FfmpegController.java:138) 
10-09 14:39:59.638: W/System.err(19460): at org.ffmpeg.android.FfmpegController.execFFMPEG(FfmpegController.java:102) 
10-09 14:39:59.638: W/System.err(19460): at org.ffmpeg.android.FfmpegController.execFFMPEG(FfmpegController.java:112) 
10-09 14:39:59.638: W/System.err(19460): at org.ffmpeg.android.FfmpegController.convertImageToMP4(FfmpegController.java:620) 
10-09 14:39:59.638: W/System.err(19460): at com.example.demo.MainActivity.onCreate(MainActivity.java:36) 
10-09 14:39:59.638: W/System.err(19460): at android.app.Activity.performCreate(Activity.java:5231) 
10-09 14:39:59.638: W/System.err(19460): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
10-09 14:39:59.638: W/System.err(19460): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
10-09 14:39:59.638: W/System.err(19460): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
10-09 14:39:59.638: W/System.err(19460): at android.app.ActivityThread.access$800(ActivityThread.java:135) 
10-09 14:39:59.638: W/System.err(19460): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
10-09 14:39:59.638: W/System.err(19460): at android.os.Handler.dispatchMessage(Handler.java:102) 
10-09 14:39:59.638: W/System.err(19460): at android.os.Looper.loop(Looper.java:136) 
10-09 14:39:59.638: W/System.err(19460): at android.app.ActivityThread.main(ActivityThread.java:5001) 
10-09 14:39:59.638: W/System.err(19460): at java.lang.reflect.Method.invokeNative(Native Method) 
10-09 14:39:59.638: W/System.err(19460): at java.lang.reflect.Method.invoke(Method.java:515) 
10-09 14:39:59.638: W/System.err(19460): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
10-09 14:39:59.638: W/System.err(19460): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
10-09 14:39:59.638: W/System.err(19460): at dalvik.system.NativeStart.main(Native Method) 

回答

3

這是語法的ffmpeg爲GIF轉換到MP4 :

ffmpeg -f gif -i infile.gif outfile.mp4 

ffmpeg的android命令行版本將非常相似。

This javadoc說明如何使用android-ffmpeg庫在ffmpeg上運行命令。

希望可以幫到

+0

感謝jodes給你的時間,但是在android應用程序中何處進入這個命令行你有這樣的任何例子嗎? – Hardik 2014-10-07 10:11:38

+0

在上面的庫中我的問題有一個方法名稱「公共剪輯convertImageToMP4()」這是做你在你的答案中寫的相同,但它不工作 – Hardik 2014-10-07 10:19:16

+0

你可以看到這個類https://github.com/guardianproject/ android-ffmpeg-java/blob/master/src/org/ffmpeg/android/FfmpegController.java有一個方法convertImageToMP4() – Hardik 2014-10-07 10:20:27