需要 MediaStore.ACTION_VIDEO_CAPTURE 创建 MP4 视频

Posted

技术标签:

【中文标题】需要 MediaStore.ACTION_VIDEO_CAPTURE 创建 MP4 视频【英文标题】:Need MediaStore.ACTION_VIDEO_CAPTURE create an MP4 video 【发布时间】:2021-12-09 14:34:18 【问题描述】:

我正在尝试从 MediaStore.ACTION_VIDEO_CAPTURE 的捕获中获取真正的 mp4 文件 . 生成的文件不是真正的 MP4,因为 iPhone 无法读取此文件。 android 生成一个 3gpp 但带有 mp4 扩展名。

我尝试使用网络转换器从这个假的 mp4 文件生成一个 mp4,结果可以在 Iphone 中使用!

请问,如何才能获得真正的 MP4?

我的代码:

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) 
                                    ContentValues values = new ContentValues(1);
                                    values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
                                    getContentResolver().delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,null);
                                    Uri outputFileUri = getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
                                    Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                                    captureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                                    captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
                                    activityResultLauncher.launch(captureIntent);
                                    Log.i("IFFFFF","");

                                 else 
                                    Log.i("ELOOSSEEEE","");
                                    Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                                    File file = new File(Environment.getExternalStorageDirectory(), "video.mp4");
                                    Uri outputFileUri = Uri.fromFile(file);
                                    captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
                                    activityResultLauncher.launch(captureIntent);
                                

【问题讨论】:

【参考方案1】:

我正在尝试从 MediaStore.ACTION_VIDEO_CAPTURE 的捕获中获取真正的 mp4 文件

有数十个(如果不是数百个)不同的应用程序会响应您的Intent。这包括来自手机制造商的预装相机应用程序和来自 Play 商店等地方的用户安装的相机应用程序。这些应用程序如何处理您的请求取决于其开发人员。 ACTION_VIDEO_CAPTUREACTION_IMAGE_CAPTURE 一样,适用于不关心捕获操作细节的情况。

由于您关心这些细节,因此您需要自己捕捉视频,无论是直接使用MediaRecorder还是使用third-party libraries。

【讨论】:

以上是关于需要 MediaStore.ACTION_VIDEO_CAPTURE 创建 MP4 视频的主要内容,如果未能解决你的问题,请参考以下文章

测试在公司和哪些人员来对接,需要看哪些文档,需要写哪些东西

如果其他模块需要,根 composer 文件中是不是需要 phpunit?

微信小程序需要啥知识

需要人陪

为啥Kafka需要zookeeper

为啥有些库需要嵌入而有些则不需要?