需要 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_CAPTURE
和ACTION_IMAGE_CAPTURE
一样,适用于不关心捕获操作细节的情况。
由于您关心这些细节,因此您需要自己捕捉视频,无论是直接使用MediaRecorder
还是使用third-party libraries。
【讨论】:
以上是关于需要 MediaStore.ACTION_VIDEO_CAPTURE 创建 MP4 视频的主要内容,如果未能解决你的问题,请参考以下文章