Android:设置录制视频大小的正确和通用方法是什么?

时间:2016-08-18 08:30:34

标签: android mediarecorder

我正在为Android媒体记录开发应用程序,但有些设备有不同的屏幕录制分辨率。它总是让我崩溃。

我正在谷歌正式使用此代码 https://github.com/googlesamples/android-MediaRecorder/blob/master/Application/src/main/java/com/example/android/mediarecorder/MainActivity.java

它在索尼Xperia Z2 D6503上也不起作用

我调查此代码后

public static Camera.Size getOptimalVideoSize(List<Camera.Size> supportedVideoSizes,
                                                  List<Camera.Size> previewSizes, int w, int h)

无法正常工作,因为它会产生1280x720的大小

并且日志显示

08-18 08:30:12.367 13251 13251 D MediaRecorder: Using Profile 0
08-18 08:30:12.367 13251 13251 D CameraTexture: vidsize = 720 : 1280

08-18 08:30:12.369   339  1370 W ServiceManager: Permission failure: com.sonyericsson.permission.CAMERA_EXTENDED from uid=19621 pid=13251
08-18 08:30:12.370   339  1370 W ServiceManager: Permission failure: com.sonyericsson.permission.CAMERA_EXTENDED from uid=19621 pid=13251
08-18 08:30:12.377  1478  1478 I art     : Explicit concurrent mark sweep GC freed 21(1200B) AllocSpace objects, 0(0B) LOS objects, 40% free, 12MB/21MB, paused 806us total 23.539ms
08-18 08:30:12.390 13251 13251 E MediaRecorder: Starting Record
08-18 08:30:12.391   339   974 W StagefrightRecorder: Intended video encoding frame width (1280) is too large and will be set to (800)
08-18 08:30:12.392   339   974 W StagefrightRecorder: Intended video encoding frame height (720) is too large and will be set to (480)
08-18 08:30:12.393   339   974 E CameraSource: Video dimension (800x480) is unsupported
08-18 08:30:12.394 13251 13251 E MediaRecorder: start failed: -19

我不知道如何正确创建可在所有Android设备上使用的mediarecorder。有什么参考吗?

1 个答案:

答案 0 :(得分:0)

如果您唯一感兴趣的是API 21+,则可以使用 getVideoCapabilities()方法。

CamcorderProfile 类自API 8以来一直存在,但不太有用。

如果所有其他方法都失败了,请使用反复试验,测试每个所需的分辨率并标记不起作用的分辨率。

(这是here

编辑: 使用 CamcorderProfile ,您应该在您的情况下使用 QUALITY_HIGH (我想阅读您的代码示例)