我正在开发一个 Android 应用程序,我想从静态图像列表中创建一个视频。在互联网上进行了一些搜索后,我意识到使用“FFMPEG”是完成这件事的方法。所以我得到了这个网站: https ://github.com/guardianproject/android-ffmpeg-java ,我从那里下载了 C 库和 Java 包装器。我能够编译 C 库——当然不是指令的布局方式——但我仍然能够在 /external/android-ffmpeg/ffmpeg 目录下获得“ffmpeg”可执行文件。我将该可执行文件复制到当前目录中,然后将其复制到 Android 下我的应用可以访问它的目录中。然后我调用了提供的 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+"");
}
});
以前有人实施过吗?如果是的话,你能指出我做错了什么吗?如果需要,我会提供更多信息。