Захват видео с соотношением сторон 1: 1 на Android

Я пытаюсь разработать приложение для Android, которое будет записывать видео с разрешением 15 секунд 640 x 640 с использованием MediaRecorder, извлекать все кадры с помощью ffmpeg, применять некоторые художественные фильтры, используя gpuimage, а затем комбинировать кадры с видео с помощью ffmpeg.

Я столкнулся с проблемой записи видео с разрешением 640×640. (Приложение для Android android делает это)

Я попробовал использовать setVideoSize (640, 640) MediaRecorder, а выходное видео – 640×640, но видео выглядит как видео 640×480, растянутое вертикально, чтобы сделать его 640×640. Я думаю, это потому, что 640×640 не является разрешением, которое возвращается поддерживаемым списком разрешения захвата видео. Есть ли способ сообщить медиа-рекордеру поддерживать соотношение сторон при выполнении такого масштабирования, чтобы получить видео, которое было масштабировано с 640×480 до 640×640, путем обрезки ширины, а не растяжения по высоте?

Я, наконец, закончил с захватом на 640×480, обрезая его до 480×480, разделив на фреймы с помощью ffmpeg, а затем, когда кадры объединяются обратно в видео с помощью ffmpeg, он масштабируется до 640×640.

 String[] ffmpegCommand = {"/sdcard/frames/ffmpeg", "-i", "/sdcard/frames/test.3gp", "-vf", "crop=480:480:80:0,transpose=1", "-r", "30", "-an", "-qscale:v", "2", "-vsync", "1", "-threads", "4", "/sdcard/frames/image%03d.jpg"}; 

Transpose = 1 требуется, когда приложение работает в портретном режиме.

Примечание. При захвате для отображения только той части видео, которая будет включена в окончательное обрезанное видео, я добавил две черные полосы размером 80 пикселей поверх экрана предварительного просмотра, чтобы скрыть 80 пикселей по обе стороны видео, которые позже Обрезается. Таким образом, пользователь получает то, что видит на предварительном просмотре.

Intereting Posts
Есть ли какая-то конкретная причина использовать Amazon SNS вместо прямого сервиса Baidu Сжатие изображения в Android Нарисуйте изогнутый пользовательский объект в LIBGDX? Android. Невозможно воспроизвести видео (mp4 / mov / 3gp / etc.)? Ошибка файла не найдена после выбора файла в android Использование автозаполнения textview с указанием номера телефона Автомасштабирование текста TextView для вставки в пределах границ Высота вложенного ресайклера не ограничивает его содержимое Метод onResume () активности запуска запускается дважды, но onCreate () только один раз Как получить текущее время в собственном коде Android? Как сделать поддержку андроида FloatingActionButton в нижней правой части экрана? Как установить разные столбцы для строк в gridview Уведомление об отзыве магазина Android Play Пытаясь получить массив из php и сохранить его в java, android Модернизация сети делает сетевые вызовы в основном потоке?