В настоящее время я создаю приложение камеры, используя camera2 api. Я записываю видео, и этот файл отправляется на другой вид деятельности, чтобы мы могли исправить ориентацию и посмотреть видео. Затем измененное видео или изображение сохраняется на устройстве.
Когда я использую неподвижное изображение, оно работает, потому что я могу вытащить растровое изображение и затем восстановить изображение следующим образом:
public String saveImage() {
//Getting a new file name and file path
//Should we delete these images after were done with them?
File newImageFile = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File newImageFolder = new File(newImageFile, "camera2VideoImage");
if (newImageFolder.exists())
{
newImageFolder.mkdirs();
}
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String prepend = "Image_" + timestamp + "_";
File imageFile = null;
try {
imageFile = File.createTempFile(prepend, ".jpg", newImageFolder);
} catch (IOException e) {
e.printStackTrace();
}
String newFileName = imageFile.getAbsolutePath();
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
try {
FileOutputStream fos = new FileOutputStream(newFileName);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//returning the new file path.
return newFileName;
}
Это работает, они просматривают изображение и имеют возможность изменить его ориентацию на случай, если оно испортилось, а затем мы сохранили его.
Я пытаюсь сделать то же самое с видео, но не уверен как вытащить видео из TextureView, чтобы я мог сохранить его снова с исправленной ориентацией, поскольку фронтальная камера иногда переворачивается в зависимости от телефона.
Метод сохранения записи:
public String saveVideo() {
//Getting a new file name and file path
//Should we delete these images after were done with them?
File newVideoFile = getExternalFilesDir(Environment.DIRECTORY_MOVIES);
File newVideoFolder = new File(newVideoFile, "camera2VideoImage");
if (newVideoFolder.exists())
{
newVideoFolder.mkdirs();
}
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String prepend = "Video_" + timestamp + "_";
File videoFile = null;
try {
videoFile = File.createTempFile(prepend, ".jpg", newVideoFolder);
} catch (IOException e) {
e.printStackTrace();
}
String newFileName = videoFile.getAbsolutePath();
textureView.getBitmap();
FileOutputStream fos = new FileOutputStream(newFileName);
//returning the new file path.
return newFileName;
}
Как я могу получить исправленное видео из вида текстуры и затем сохранить его, как метод Image выше?