如何使用Intent将视频转换为可用质量?

时间:2016-10-17 20:30:41

标签: android android-intent video-processing android-camera-intent video-compression

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

请记住some phone makers will ignore the intent extras sent,如何获得用于上传,信息传递等的中等质量视频?

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

你会建议我做什么来获得'#34;中等质量"视频相对于2个极端的方式太大或太小?

全部谢谢!

0 个答案:

没有答案