作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在互联网上搜索,发现这个名为“ffmpeg”的库说它能够将 GIF 转换为 MP4。我已经尝试但没有成功并且出现异常。
https://github.com/guardianproject/android-ffmpeg-java
如果有人知道如何在 android 平台上将 GIF 转换为 MP4,请帮助我。谢谢
编辑
这是我正在使用上面的 ffmpeg 库
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)
最佳答案
这是 ffmpeg 将 gif 转换为 mp4 的语法:
ffmpeg -f gif -i infile.gif outfile.mp4
android 命令行版本的 ffmpeg 会非常相似。
This javadoc解释了如何使用 android-ffmpeg
库在 ffmpeg 上运行命令。
希望对你有帮助
关于android - 如何将 GIF 转换为 Mp4 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26233394/
我是一名优秀的程序员,十分优秀!