Подтвердить что ты не робот

Поворот видео в портретном режиме

Мое приложение позволяет пользователю захватывать видео:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_VIDEO_REQUEST); 

или фото:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

В случае с фотографиями я могу определить, были ли они сделаны в любом режиме, кроме пейзажа, и затем поворачивать их, прежде чем я загружу их в Интернет:

ExifInterface exif = new ExifInterface(fileName);
int exifOrientation = Integer.parseInt(exif.getAttribute(ExifInterface.TAG_ORIENTATION));
float rotate = 0;
switch (exifOrientation){
case ExifInterface.ORIENTATION_ROTATE_90:
    rotate = 90;
    break;
case ExifInterface.ORIENTATION_ROTATE_180:
    rotate = 180;
    break;
case ExifInterface.ORIENTATION_ROTATE_270:
    rotate = 270;
    break;
}

if(rotate > 0){
    Bitmap bitmap = BitmapFactory.decodeFile(fileName);
    Matrix matrix = new Matrix();
    matrix.postRotate(rotate);
    bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
    OutputStream outStream = context.getContentResolver().openOutputStream(Uri.fromFile(file));
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
}

Как сделать то же самое с видео?

4b9b3361

Ответ 1

Я, кажется, не полностью понимаю ваш вопрос. Вот некоторые вопросы, которые, как я думал, по крайней мере будут направлять вас в правильном направлении. Надеюсь, что это поможет.

  • Вы хотите повернуть видео для воспроизведения с помощью MediaPlayer?

  • Вы хотите изменить жесткий код в видеофайле, чтобы он вращался повсюду?

  • Повернуть буферизованную ориентацию видео?

=============================================== =================================== Этот ответ на вопроС# 1:

//rotating a SurfaceView that contains the MediaPlayer
/*
    Create a new MediaPlayer SurfaceView, then use the SurfaceHolder interface
*/
video = new SurfaceView();
video.getHolder().setType(SurfaceHolder.SURFACE_TYPE_NORMAL);

video.getHolder().lockCanvas().rotate(90);

Этот ответ на вопрос № 2:

Что касается изменения жесткого кода видео. Я бы посоветовал использовать красивый видеокодек GUI для поворота видео и сохранить его настройки. В противном случае вам придется получить доступ к исходному коду из декодера, а затем вашему SOL с моим советом.

Этот ответ на вопрос № 3:

В приведенном ниже сообщении объясняется, как вы можете поворачивать буферизованное видео и/или изменять его настройки ориентации для разных режимов.

Отправить здесь: Изменение ориентации Android VideoView с буферизованным видео

=============================================== ===================================

Если это вам не поможет, я уверен, что это поможет кому-то другому и удачи.