【发布时间】:2023-03-22 02:45:01
【问题描述】:
我正在尝试以 1:1 的比例(正方形)录制视频,但无法正常工作, 如果我在媒体记录器实例中设置自定义分辨率,我会在媒体记录器启动时收到错误。
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 x 640。有没有办法在 android 上裁剪视频?我看过 ffmpeg 库,但我需要在项目中使用它,我不确定 LGPL 是如何工作的。有没有更简单的解决方案?
【问题讨论】:
-
“如果我设置了相机支持的分辨率,它就可以工作”——只能靠运气。使用
getSupportedVideoSizes()查找视频录制支持的尺寸,而不是getSupportedPreviewSizes()。 “Instagram 如何在 Android 应用中裁剪视频?” ——他们可能会像 Vine 那样做,即不使用MediaRecorder,而是捕获预览帧并将它们拼接在一起以创建电影(在 Instagram 的情况下,他们会将帧裁剪为正方形作为缝合工作)。这和ffmpeg解决方案都不会特别容易实施。 -
tnx 提示,你有任何有用的链接如何完成这个图像拼接吗? getSupportedVideoSizes() 请求 api 级别 11,我正在使用级别 10,这就是为什么我使用 getSupportedPreviewSizes()
-
"你有任何有用的链接如何完成这个图像拼接吗?" -- 不,对不起。
-
@CommonsWare ffmpeg如何在Android SDK中实现?