Как заставить Android TextureView показывать видео в правильной ориентации

Я хочу использовать Android_4.1 MediaCodec API для кодирования видеоданных, захваченных с камеры, затем декодировать видеоданные и показывать видео на TextureView. Теперь все в порядке, но TextureView не смог отобразить декодированное видео в правильной ориентации. Пожалуйста, посмотрите на эти две фотографии.

1.Рисунок 1

введите здесь описание изображения

2.Рисунок 2

введите здесь описание изображения

TextureView на рисунке 1 показывает, какую ориентацию я хочу. Этот TextureView вызывается setRotation(90). Но он не всегда работает. Если я устанавливаю этот TextureView "match_parent/fill_parent/full_screen", а также setRotation (90), это не работает.

Вот параметры моей камеры:

    mCamera.setDisplayOrientation(90);
    Parameters parameters = mCamera.getParameters();
    parameters.setPreviewFormat(ImageFormat.NV21);
    parameters.setPreviewSize(640, 480);
    mCamera.setParameters(parameters);
    getSupportedCameraParams();

Я попытался установить TextureView width = screenHeight и height = screenWidth, также я попытался установить parameters.setPreviewSize(480, 640), но они не работают.

Мой вопрос: как мне сделать, чтобы полноэкранный TextureView отображал видео в правильной ориентации?

Я не силен в английском, надеюсь, вы меня понимаете.

Будем признательны за любую помощь. Спасибо!


person Read Mark    schedule 21.10.2013    source источник


Ответы (1)


попробуйте добавить эти строки после setDisplayOrientation, чтобы заставить TextureView повторно отображаться.

mTextureView.requestLayout();
mTextureView.invalidate();

Это помогло мне, когда я пытался показать обрезанное видео, и иногда оно не обрезало его при изменении ориентации экрана.

person Vladyslav Matviienko    schedule 21.10.2013
comment
@metalurgusThe RelativeLayout будет обрезать дочерние элементы, поэтому я использую FrameLayout/LinearLayout и устанавливаю TextView width = screenHeight & height = screenWidth & setRotation (90), теперь это работает хорошо. Танки ваши советы. - person Read Mark; 22.10.2013