如何转换GIF到MP4这可能吗? [英] How to convert GIF to Mp4 is it possible?
问题描述
我有互联网上搜索,我发现这个库被称为ffmpeg的即说这是能够GIF转换为MP4。我已经试过,但没有成功,并获得例外。
https://github.com/guardianproject/android-ffmpeg-java
如果有人知道如何GIF转换为MP4的Android平台,请帮助我。谢谢
修改
这是我使用的ffmpeg上面做的lib
字符串路径= Environment.getExternalStorageDirectory()
+/gif/wall.jpg
字符串TMP = Environment.getExternalStorageDirectory()+/ GIF / tmp目录;
的System.out.println(路径);
夹夹=新剪辑(路径);
文件f =新的文件(TMP);
尝试{
f.createNewFile();
}赶上(IOException异常E1){
// TODO自动生成catch块
e1.printStackTrace();
}
尝试{
FfmpegController控制器=新FfmpegController(这一点,F);
controller.convertImageToMP4(夹,5,
Environment.getExternalStorageDirectory()
+/gif/mynew.mp4,新ShellCallback(){ @覆盖
公共无效shellOut(字符串shellLine){
// TODO自动生成方法存根 } @覆盖
公共无效processComplete(INT exitValue){
// TODO自动生成方法存根 }
}); }赶上(FileNotFoundException异常五){
// TODO自动生成catch块
e.printStackTrace();
}赶上(IOException异常五){
// TODO自动生成catch块
e.printStackTrace();
}赶上(例外五){
// TODO自动生成catch块
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):在java.lang.ProcessManager.exec(ProcessManager.java:184)
10-09 14:39:59.638:W / System.err的(19460):在java.lang.ProcessBuilder.start(ProcessBuilder.java:195)
10-09 14:39:59.638:W / System.err的(19460):在org.ffmpeg.android.FfmpegController.execProcess(FfmpegController.java:138)
10-09 14:39:59.638:W / System.err的(19460):在org.ffmpeg.android.FfmpegController.execFFMPEG(FfmpegController.java:102)
10-09 14:39:59.638:W / System.err的(19460):在org.ffmpeg.android.FfmpegController.execFFMPEG(FfmpegController.java:112)
10-09 14:39:59.638:W / System.err的(19460):在org.ffmpeg.android.FfmpegController.convertImageToMP4(FfmpegController.java:620)
10-09 14:39:59.638:W / System.err的(19460):在com.example.demo.MainActivity.onCreate(MainActivity.java:36)
10-09 14:39:59.638:W / System.err的(19460):在android.app.Activity.performCreate(Activity.java:5231)
10-09 14:39:59.638:W / System.err的(19460):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-09 14:39:59.638:W / System.err的(19460):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
10-09 14:39:59.638:W / System.err的(19460):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
10-09 14:39:59.638:W / System.err的(19460):在android.app.ActivityThread.access $ 800(ActivityThread.java:135)
10-09 14:39:59.638:W / System.err的(19460):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1196)
10-09 14:39:59.638:W / System.err的(19460):在android.os.Handler.dispatchMessage(Handler.java:102)
10-09 14:39:59.638:W / System.err的(19460):在android.os.Looper.loop(Looper.java:136)
10-09 14:39:59.638:W / System.err的(19460):在android.app.ActivityThread.main(ActivityThread.java:5001)
10-09 14:39:59.638:W / System.err的(19460):在java.lang.reflect.Method.invokeNative(本机方法)
10-09 14:39:59.638:W / System.err的(19460):在java.lang.reflect.Method.invoke(Method.java:515)
10-09 14:39:59.638:W / System.err的(19460):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785)
10-09 14:39:59.638:W / System.err的(19460):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
10-09 14:39:59.638:W / System.err的(19460):在dalvik.system.NativeStart.main(本机方法)
这是语法的ffmpeg为GIF转换为MP4:
的ffmpeg -f GIF -i infile.gif outfile.mp4
的ffmpeg的android的命令行版本将是非常相似的。
这javadoc的介绍了如何使用 Android的ffmpeg的
库上的ffmpeg运行命令。
希望帮助
I have search on internet and i found this library called "ffmpeg" that saying it is able to convert GIF TO MP4. I have tried but no success and getting exception.
https://github.com/guardianproject/android-ffmpeg-java
If anybody know how to convert GIF to MP4 in android platform please help me. thanks
EDIT
this is i am doing using above 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();
}
getting following exception
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)
This is the syntax for ffmpeg to convert a gif to mp4:
ffmpeg -f gif -i infile.gif outfile.mp4
The android command line version of ffmpeg will be very similar.
This javadoc explains how to use the android-ffmpeg
library to run commands on ffmpeg.
Hope that helps
这篇关于如何转换GIF到MP4这可能吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!