mediarecorder - Android9录屏时保存为3gp文件的问题
问题描述
在 Android 9 中,即使您将 MediaStore 的 MIME_TYPE 指定为“video/mp4”,将 DISPLAY_NAME 指定为“fileName.mp4”,也会将其保存为 3gp 文件。
在 Android 10 中,它可以正常工作。
如何解决这个问题呢
val contentValues = ContentValues().apply {
put(MediaStore.Video.Media.TITLE, fileName)
put(MediaStore.Video.Media.DISPLAY_NAME, fileName)
put(MediaStore.Video.Media.DATE_ADDED, dateSeconds)
put(MediaStore.Video.Media.DATE_MODIFIED, dateSeconds)
put(MediaStore.Video.Media.MIME_TYPE, "video/mp4")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
put(MediaStore.Video.Media.IS_PENDING, 1)
}
}
val itemUri = contentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues)
contentResolver.openOutputStream(itemUri, "w")?.use { os ->
tempFile.inputStream().copyTo(os)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
contentValues.clear()
contentValues.apply {
put(MediaStore.Video.Media.IS_PENDING, 0)
}
contentResolver.update(itemUri, contentValues, null, null)
}
解决方案
推荐阅读
- jquery - 在重置之前将超时添加到倒计时
- java - 如何将此 mongodb 聚合命令转换为 java 代码
- r - 在R中找到有理函数的局部最大值
- arrays - 如何比较两个包含点的数组以找出相似度的百分比?
- spring-boot - 在 Spring Boot WebFlux 上检索路径变量(功能方法)
- c# - 在asp.net中设置超时1分钟
- hyperledger-fabric - Fabric ./byfn.sh up 返回错误“...container_linux.go:348...”【win10家庭版】
- javascript - TypeError:fn.call 不是函数
- github - Hugo Github 页面错误
- vue.js - 为什么这是 Vue 方法中的窗口对象,即使使用箭头函数