在我的 Android 设备上,我可以通过以下两种方式之一拍摄视频:
1)我可以编写一个自定义类/一组方法,让我可以利用相机并直接控制功能
或者
2)我可以使用意图打开视频并进行录制。
这个问题与后者有关(使用意图)。这是我用来拍摄视频的意图代码:
private void takeVideo(Activity activity, Context context){
//Actual intent used to capture the video
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
//30 Second time limit (can make it anything, just using 30 here)
takeVideoIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 30);
//Utility method I have for generating a uri to use for the video
android.net.Uri myUri = generateVideoUri(context);
//Uri to use
takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, myUri);
//Cap it at 20mb
takeVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 20000000L);
//HERE IS WHERE MY QUESTION LIES //0 is low, 1 is high
takeVideoIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
activity.startActivityForResult(takeVideoIntent, 100);
}
上面的代码工作得很好。我的问题是围绕质量。
如果我发送 0 作为质量,那绝对是可怕的质量(IE,10 秒的视频大约 0.3mb 并且似乎是手机可以处理的最低质量)。如果我发送 1 作为质量,它会非常大且笨拙(IE,10 秒的视频大约是 50mb)。
请记住,一些电话制造商会忽略发送的附加信息,我该如何获取中等质量的视频以用于上传、消息传递等?
- 我需要对大文件进行某种压缩吗?
- 这只能通过自定义视频/相机类来完成吗?
- 还有其他我没有想到的方法吗?
你会建议我做什么来获得“中等质量”的视频,而不是太大或太小的两个极端?
谢谢大家!