Я хотел бы записать вид в виде макета, который у меня есть в макете, чтобы впоследствии он мог быть присоединен к записи, хранящейся у меня. Я знаю, как прикрепить эти 2, я использую FFmpeg, и он прекрасно работает, но проблема в том, чтобы записать вид как видео.
Вот что я пробовал:
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoFrameRate(30);
mediaRecorder.setVideoEncodingBitRate(10000000);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setOutputFile(path);
int width = myView.getWidth();
int height = myView.getHeight();
mediaRecorder.setVideoSize(width, height);
mediaRecorder.prepare();
mediaRecorder.start(); // Recording is now started
Surface surface = mediaRecorder.getSurface();
while (isRunning) {
Thread.sleep(15);
Canvas newCanvas = surface.lockCanvas(new Rect(0, 0, width, height));
Paint newPaint = new Paint();
Bitmap bitmap = Bitmap.createBitmap(myView.getWidth(), myView.getHeight(), Bitmap.Config.ARGB_8888);
newCanvas.drawBitmap(bitmap, 0, 0, newPaint);
surface.unlockCanvasAndPost(newCanvas);
}
В частности, проблема, с которой я сталкиваюсь, связана с прозрачностью, я могу сделать снимок вида как Растровое изображение и наложить его на Поверхность , но каждое наложенное мной изображение является прозрачнымЭто хорошо, но проблема в том, что после наложения они сливаются вместе и просто объединяются в одно изображение из-за прозрачности.
Поэтому я подумал, что создание зеленого фона перед наложением каждого растрового изображения будетработать лучше, и использовать библиотеку FFmpeg вместе. С библиотекой FFmpeg я попытался удалить зеленый фон, который я добавил с определенным цветом, но он никогда не удавался правильно, у меня почти всегда оставался зеленый градиент по углам вида. Независимо от того, какую настройку я использую и насколько точно настроен цветовой ключ.