Android FFMPEG:图像到mp4视频转换
我用ffmpeg尝试了许多可能的命令行选项,但是没有成功。以下是我的命令文件生成器方法:Android FFMPEG:图像到mp4视频转换,android,video,ffmpeg,Android,Video,Ffmpeg,我用ffmpeg尝试了许多可能的命令行选项,但是没有成功。以下是我的命令文件生成器方法: private String[] generateCommandFile() { ArrayList<String> cmd = new ArrayList<>(); cmd.add("-y"); cmd.add("-f"); cmd.add("concat"); cmd.add("-safe"); cmd.add("0");
private String[] generateCommandFile() {
ArrayList<String> cmd = new ArrayList<>();
cmd.add("-y");
cmd.add("-f");
cmd.add("concat");
cmd.add("-safe");
cmd.add("0");
cmd.add("-i");
String picturesTextFile = generateMergingFilesTexts();
if (picturesTextFile == null) {
return null;
}
cmd.add(picturesTextFile);
cmd.add("-i");
String audioTextFile;
if (numberOfAudioFiles > 1) {
audioTextFile = generateAudioFilesTexts();
} else {
audioTextFile = getAudioFilePath(audioRecordingFileName + Integer.toString(1));
}
cmd.add(audioTextFile);
cmd.add("-vsync");
cmd.add("vfr");
cmd.add("-pix_fmt");
cmd.add("yuv420p");
String currentDateTimeString = new SimpleDateFormat("dd MMMM yyyy", Locale.US).format(Calendar.getInstance().getTime());
File dirOut = new File(this.getExternalFilesDir(null), "D:T:" + currentDateTimeString);
if (!dirOut.exists()) {
dirOut.mkdirs();
}
directoryPath = dirOut.getAbsolutePath();
File fileOut = new File(dirOut, "T__" + Long.toString(totalTime) + "__P__" + Integer.toString(picturesModelInfo.getNumberOfShots()) + ".mp4");
cmd.add(fileOut.getAbsolutePath());
Log.d(TAG, "Saving File At " + fileOut.getAbsolutePath());
String[] finalCommand = new String[cmd.size()];
for (int i = 0; i < cmd.size(); i++) {
finalCommand[i] = cmd.get(i);
}
String finalString = "";
for (String command : finalCommand) {
finalString += command;
}
Log.d(TAG, "Final Command Is " + finalString);
return finalCommand;
}
主要问题是视频不能在android默认播放器中播放(显示(“无法播放视频,不支持的文件类型”),但可以与VLC程序一起使用。)
澳大利亚国立大学的建议
谢谢您的最终命令中没有空格,您需要显示此命令的完整控制台输出/日志。为什么要使用concat解复用器进行图像输入?使用图像解复用器会更容易(除非您试图改变图像显示持续时间)。我会给你一个例子,但我不知道图像输入的文件名。所有图像输入是否具有相同的宽度、高度和像素格式?如果你不知道这个问题的答案,那么显示每个图像的信息:
ffmpeg-i image1-i image2-i image3
,等等。我正在使用这个库,所以我想我可以在不编译的情况下使用它,ffmpeg在我身边工作得非常完美,一个问题是我无法用默认的android播放器打开它),可能我的命令字符串中遗漏了一些内容。我将再次询问:请显示ffmpeg
命令中完整的控制台输出/日志。在我的第一次评论中,你仍然没有回答我的问题。为什么你很难提供帮助?我已经为你打印了元数据,它有用吗<代码>元数据:主要品牌:3gp4次要版本:0兼容品牌:isom3gp4创建时间:2017-07-20 09:25:40 com.android.version:6.0持续时间:00:00:02.03,开始时间:0.000000,比特率:168 kb/s流#1:0(英文):音频:aac(LC)(mp4a/0x6134706D),48000 Hz,立体声,fltp,156 kb/s(默认)元数据:创建时间:2017-07-20 09:25:40处理程序名称:SoundHandle Metadata.txt:只读文件系统
-y-fconcat-safe0-i/storage/emulated/0/Android/data/com.essentialsln.memtalk/files/pictures_merging.txt-i/storage/emulated/0/Android/data/com.essentialsln.memtalk/files/AudioRecording1.3gp-vsyncvfr-pix_fmtyuv420p/storage/emulated/0/Android/data/com.essentialsln.memtalk/files/D:T:19 July 2017/T__2__P__3.mp4