Всякий раз, когда я запускаю эту команду FFMPEG на Android для наложения изображения на видео с использованием библиотеки FFMpeg Android :
"-i",
realPathVideo,
"-i",
realPathImage
,
"-filter_complex",
"overlay=0:0",
"-codec:a",
"copy",
dest.getAbsolutePath()
, она фактически никогда не работает, так как она всегда заканчивается "onFinish" и никогда "onSuccess". Я не знаю почему, но почему-то эта команда не работает должным образом, хотя она никогда не показывает мне сообщение об ошибке. Чтобы убедиться, что параметры верны, я покажу вам, как их получить:
realpathvideo: /storage/emulated/0video.mp4
realpathimage: /storage/emulated/0/VideoOverlay.jpg
Выходной каталог: /storage/emulated/0/appname/temporaryVideoFileWithOverlay.mp4
Вывод realPathVideo из файла, созданного путем перемещения результата действия камеры во внешнее хранилище с помощью метода:
public static void copyFile(File src, File dst) throws IOException
{
FileChannel inChannel = new FileInputStream(src).getChannel();
FileChannel outChannel = new FileOutputStream(dst).getChannel();
try
{
inChannel.transferTo(0, inChannel.size(), outChannel);
}
finally
{
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
}
}
, где sr c - это результат видео, сохраненный во внутреннем хранилище, и dst файл внешнего хранилища.
Файл наложения растрового изображения сохраняется следующим образом:
realpathImage получен из файла растрового изображения, сохраненного с помощью:
private Uri saveOverlay(Bitmap bitmap) {
File file;
// Get the external storage directory path
String path = Environment.getExternalStorageDirectory().toString();
// Create a file to save the image
file = new File(path, "VideoOverlay" + ".jpg");
try {
OutputStream stream = null;
stream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
stream.flush();
stream.close();
} catch (IOException e) // Catch the exception
{
e.printStackTrace();
}
// Parse the saved image path to uri
Uri savedImageURI = Uri.parse(file.getAbsolutePath());
return savedImageURI;
}