Я сталкиваюсь с текущей проблемой. У меня есть массив из 100 растровых изображений. это скриншоты, которые я взял из вида. Я использовал JCode c, чтобы сделать это для видео, но оно замедляется. Я надеюсь получить лучшие результаты с FFmpeg
Теперь я хочу использовать библиотеку FFmpeg. Были заданы вопросы Simillar, но я понятия не имею, как использовать ffmpeg и как мне использовать его в моем конкретном случае c. Все, что я вижу, это странные сложные команды. См .:
File dir = your directory where image stores;
String filePrefix = "picture"; //imagename prefix
String fileExtn = ".jpg";//image extention
filePath = dir.getAbsolutePath();
File src = new File(dir, filePrefix + "%03d" + fileExtn);// image name should ne picture001, picture002,picture003 soon ffmpeg takes as input valid
complexCommand = new String [] {"- i", sr c + "", "- c: v", "libx264", "- c: a", "aa c", "-vf", "setpts = 2 * PTS", "-pix_fmt", "yuv420p", "-crf", "10" , "-r", "15", "-shortest", "-y", "/ storage / emulated / 0 /" + app_name + "/ Video /" + app_name + "_Video" + number + ".mp4" };
Проблема в том, что в этом случае он использует путь. Мне нужно, чтобы это было из массива. И я понятия не имею, что делать со строкой (ComplexCommands): / Мои растровые изображения выглядят так:
Растровое изображение [] Растровые изображения = новые растровые изображения [100];
это будет заполнено позже .
, если кто-то ищет, как это сделать с JCode c:
try {
out = NIOUtils.writableFileChannel( Environment.getExternalStorageDirectory().getAbsolutePath()+"/***yourpath***/output"+System.currentTimeMillis()+".mp4");
// for Android use: AndroidSequenceEncoder
AndroidSequenceEncoder encoder = new AndroidSequenceEncoder(out, Rational.R(25, 1));
for (int i = 0 ; i < 100 ; i++) {
// Generate the image, for Android use Bitmap
// Encode the image
System.out.println("LOO2P"+i);
encoder.encodeImage(bitmaps[i]);
}
// Finalize the encoding, i.e. clear the buffers, write the header, etc.
encoder.finish();
} catch (FileNotFoundException e) {
System.out.println("fNF");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IOE");
e.printStackTrace();
} finally {
System.out.println("IOSSE");
NIOUtils.closeQuietly(out);
}