1

在我的 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)。

请记住,一些电话制造商会忽略发送的附加信息,我该如何获取中等质量的视频以用于上传、消息传递等?

  • 我需要对大文件进行某种压缩吗?
  • 这只能通过自定义视频/相机类来完成吗?
  • 还有其他我没有想到的方法吗?

你会建议我做什么来获得“中等质量”的视频,而不是太大或太小的两个极端?

谢谢大家!

4

0 回答 0