Camera2 + MediaRecorder: как обрезать записанное видео для соответствия предварительному просмотру (книжная ориентация WJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Camera2 + MediaRecorder: как обрезать записанное видео для соответствия предварительному просмотру (книжная ориентация W

Сообщение Anonymous »

Я создаю приложение для Android, используя Camera2 API + MediaRecorder, где устройство заблокировано в портретном режиме (режим киоска).
Проблема
Предварительный просмотр камеры выглядит правильно (портрет, 9:16), но записанное видео по-прежнему сохраняется как полный выходной сигнал датчика (16:9 ландшафт).
Я также делюсь изображением, посмотрите, как я обрезаю видео. когда я загружаю видео через adb, оно выглядит как зеленая и фиолетовая линия, но при записи сенсора 16:9 оно записывает хорошо
Изображение

Я хочу запись WYSIWYG — это означает: записанное видео должно выглядеть точно так, как пользователь видит в предварительном просмотре (портрет с кадрированием по центру).

Что я пробовал
  • Использование setOrientationHint(90)
  • Установка фиксированного разрешения (например, 1080x1920)
  • Применение Матрица преобразования текстуры
  • Пытаюсь масштабировать предварительный просмотр в соответствии с соотношением сторон
Но ни один из этих способов на самом деле не обрезает записанное видео — они влияют только на предварительный просмотр или поворот.

Требование
  • Запись видео в портрет (9:16)
  • Обрезать по центру сенсора камеры (пейзаж 16:9 → портрет 9:16)
  • Вывод должен точно соответствовать предварительному просмотру (лишняя область не записывается)
Информация об устройстве
Это работает на устройстве на базе Rockchip (RK3568 / RK3399) в режиме киоска.
Насколько я понимаю, камера Rockchip HAL по-прежнему выдает полные кадры сенсора и не поддерживает обрезку напрямую через Camera2.

Вопросы
  • Как правильно обрезать видео во время записи с помощью Camera2 + MediaRecorder?
  • Можно ли:
    • Обрезать на уровне поверхности (например, с помощью OpenGL / SurfaceTexture)?
    • Или это нужно делать после записи с использованием MediaCodec / FFmpeg?
  • Существуют ли какие-либо специфичные для Rockchip API или функции уровня HAL, которые позволяют обрезать перед кодированием?
  • Если требуется постобработка, каков наиболее эффективный способ сделать это без повторного кодирования? проблемы?
Ожидаемый результат
Предварительный просмотр (портрет, правильно):

Код: Выделить всё

|     |
|     |
|     |
|     |
Но записанное видео на данный момент выглядит так:

Код: Выделить всё

-----------------
|               |
|               |
|               |
-----------------
Мне нужен результат:

Код: Выделить всё

|     |
|     |
|     |
|     |
(обрезано по центру из ландшафтной рамки)

Дополнительный контекст
  • Минимальный SDK: 24+
  • Использование Java
  • Нет CameraX (требуется только Camera2)
  • Производительность в реальном времени важна
Что я ищу
  • Лучший подход (в режиме реального времени или постобработка)
  • Пример кода или архитектуры
  • Любое работающее решение на встроенных устройствах, таких как Rockchip
Если кто-нибудь реализовал настоящую запись WYSIWYG, особенно на оборудовании Rockchip, буду очень признателен за рекомендации.>
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»