簡體   English   中英

在 Android 中檢查 3gp 文件是音頻/視頻嗎?

[英]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()

這將返回一個軌道數組,您可以遍歷這些軌道並解析格式以檢查它們是否包含視頻軌道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM