检查 3gp 文件是 audio/video in Android?
Check 3gp file is audio/video in Android?
我正在尝试使用以下代码获取视频文件的 mimetype。
问题:我有一个文件保存为音频,但它的 mimetype 是 video/3gpp 并且它也在播放
作为音频。。如何检测这种是音频但mimetype是video/3gpp的文件
详细信息,以便我可以将其从列表中排除。
fun getFileMimeType(url: String): String {
var type: String = ""
try {
if (url.lastIndexOf(".") != -1) {
val ext: String = url.substring(url.lastIndexOf(".") + 1)
val mime = MimeTypeMap.getSingleton()
type = mime.getMimeTypeFromExtension(ext)!!
}
} catch (e: Exception) {
}
return type
}
假设这是一个本地文件,您可以使用 MediaMetadataRetriever 获取有关媒体文件的元数据信息。
具体可以查看METADATA_KEY_HAS_VIDEO是否设置为true。
Kotlin 中的一个例子:
val metadataRetriever = MediaMetadataRetriever()
metadataRetriever.setDataSource(context, Uri.fromFile(your3GPPFile))
val hasVideoKey = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO)
if (hasVideoKey == "yes") {
//Include in your list or do whatever work
//you need here
}
您也可以使用 ExoPlayer 并加载文件,然后使用
获取曲目列表
player.getCurrentTrackGroups()
这将 return 一组曲目,您可以遍历这些曲目并解析格式以检查它们是否包含视频曲目。
我正在尝试使用以下代码获取视频文件的 mimetype。
问题:我有一个文件保存为音频,但它的 mimetype 是 video/3gpp 并且它也在播放 作为音频。。如何检测这种是音频但mimetype是video/3gpp的文件 详细信息,以便我可以将其从列表中排除。
fun getFileMimeType(url: String): String {
var type: String = ""
try {
if (url.lastIndexOf(".") != -1) {
val ext: String = url.substring(url.lastIndexOf(".") + 1)
val mime = MimeTypeMap.getSingleton()
type = mime.getMimeTypeFromExtension(ext)!!
}
} catch (e: Exception) {
}
return type
}
假设这是一个本地文件,您可以使用 MediaMetadataRetriever 获取有关媒体文件的元数据信息。
具体可以查看METADATA_KEY_HAS_VIDEO是否设置为true。
Kotlin 中的一个例子:
val metadataRetriever = MediaMetadataRetriever()
metadataRetriever.setDataSource(context, Uri.fromFile(your3GPPFile))
val hasVideoKey = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO)
if (hasVideoKey == "yes") {
//Include in your list or do whatever work
//you need here
}
您也可以使用 ExoPlayer 并加载文件,然后使用
获取曲目列表player.getCurrentTrackGroups()
这将 return 一组曲目,您可以遍历这些曲目并解析格式以检查它们是否包含视频曲目。