我想实现的是用户只能录制30秒或特定大小的视频。
我尝试使用以下那些(单独或一起
)public static final java.lang.String EXTRA_SIZE_LIMIT = "android.intent.extra.sizeLimit";
public static final java.lang.String EXTRA_DURATION_LIMIT = "android.intent.extra.durationLimit";
结果
EXTRA_SIZE_LIMIT不适用于三星手机。在HTC上,它的工作非常不准确。您必须EXTRA_VIDEO_QUALITY设置为 0,这意味着质量低下(它就像地狱一样糟糕),如果您将其设置为"1",它将不起作用。
EXTRA_DURATION_LIMIT不适用于HTC手机。除了HTC,它没有任何问题,我尝试过的所有品牌。
所以我想知道在 Android 上录制视频时是否有其他方法可以设置持续时间或大小的限制?
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); //Low Quality
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT,2097152L); //2MB
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,30); //30Seconds
startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);
您可以使用这种方式设置带有键"EXTRA_SIZE_LIMIT"和"EXTRA_DURATION_LIMIT"传递意图的视频大小或持续时间。
这工作正常。
不,使用 ACTION_VIDEO_CAPTURE
时不行。直接使用该MediaRecorder
可能会导致类似的问题。
另一种方法是通知用户限制并拒绝超出您设置的限制的录制视频。
的配置
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);//0 for low, 1 higth
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,20); //20seq
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT,size*1048576L);//X mb *1024*1024
startActivityForResult(intent, VIDEO_CAMERA_SELECT);
在LG手机上工作正常,永远没有三星设备忽略质量参数
您可以设置最长持续时间和最大文件大小
recorder.setMaxDuration(80000); // 80 seconds
recorder.setMaxFileSize(5000000);