Я пытаюсь записать видео в соотношении 1: 1 (квадрат), и я не могу заставить его работать, , если я устанавливаю собственное разрешение в экземпляре медиа-рекордера, я получаю сообщение об ошибке при запуске медиа-рекордера.Как Instagram обрезать видео в приложении Android?
mediaRecorder.setVideoSize(480, 480);
но он работает, если я установил разрешение, поддерживаемое камерой.
Camera.Parameters p = c.getParameters();
List<Camera.Size> list = p.getSupportedPreviewSizes();
//They are ordered from largest to smallest, so the largest will be...
for (Camera.Size i : list) {
if (i.width <= 640 && i.width >= 480) {
size = i;
}
Log.d(TAG, "i.height: " + i.height + " i.width" + i.width);
}
if (size != null) {
p.setPreviewSize(size.width, size.height);
c.setParameters(p);
}
затем установите
mediaRecorder.setVideoSize(size.width, size.height);
я обычно получаю 480 640. Есть ли способ, чтобы обрезать видео на Android? Я видел библиотеку ffmpeg, но мне нужно использовать ее в проекте, и я не уверен, как работает LGPL. Есть ли более простое решение?
«он работает, если я устанавливаю разрешение, поддерживаемое камерой» - только по везению. Используйте 'getSupportedVideoSizes()', чтобы найти размеры, поддерживаемые для записи видео, а не 'getSupportedPreviewSizes()'. «Как Instagram обрезает видео в приложении Android?» - они могут сделать это так, как делает Vine, чтобы не использовать «MediaRecorder», а вместо этого захватить кадры предварительного просмотра и сшить их вместе, чтобы создать фильм (в случае Instagram они обрезали рамки как квадратные как часть сшивание). Ни это, ни решение 'ffmpeg' будет особенно легко реализовать. – CommonsWare
tnx для подсказки, есть ли у вас полезные ссылки, как это делается? getSupportedVideoSizes() запрашивает api level 11, и я работаю с 10-м уровнем, поэтому я использовал getSupportedPreviewSizes() – ddog
«Есть ли у вас полезные ссылки, как это делается?» -- нет извините. – CommonsWare