3

我有一个应用程序,它允许用户导入媒体(视频、照片、音频),然后由应用程序管理(作为证据)。我发现一些录音应用程序会将音频保存为 .3gp 格式(特别是 Whats App messenger)。如果我使用以下代码获得 mime 类型:

MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);

它将以 video/3gp 的形式返回,我的应用程序将其视为“视频”类型,并尝试制作缩略图以及其他内容(我使用 mime 类型的第一部分来确定我的应用程序将其归类为哪种类型) . 但是它是音频,所以我期望的某些东西不起作用(例如为视频创建缩略图)。android是否有任何库或任何可用的东西可以让我判断文件是否只是视频音频?我想我可以尝试制作缩略图,如果失败则假设文件是​​音频,但这有点牵强,因为制作缩略图时可能会出现许多其他问题。有任何想法吗?

4

4 回答 4

3

METADATA_KEY_HAS_VIDEO

如果此密钥存在,则媒体包含视频内容。

于 2011-10-27T08:33:52.093 回答
2

我想出了一个方法来做到这一点:

public static boolean is3gpFileVideo(File mediaFile) { 
        int height = 0;
        try {
            MediaPlayer mp = new MediaPlayer();
            FileInputStream fs;
            FileDescriptor fd;
            fs = new FileInputStream(mediaFile);
            fd = fs.getFD();
            mp.setDataSource(fd);
            mp.prepare(); 
            height = mp.getVideoHeight();
            mp.release();
        } catch (Exception e) {
            Log.e(TAG, "Exception trying to determine if 3gp file is video.", e);
        }
        return height > 0;
    }

因此,要确定媒体文件是否有视频,您可以使用它.. 可能不是最有效的方法,但对于您的应用程序中很少做的事情,这似乎是一个合理的解决方案。

于 2011-10-27T22:28:16.583 回答
1

我尚未测试此解决方案,但您可以尝试获取视频的缩略图。

Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoPath,
            MediaStore.Images.Thumbnails.MINI_KIND);

如果是thumbnail则为null音频,否则为视频。

于 2013-12-10T18:07:30.880 回答
0

我已经测试了 Alessandro Roaro 的解决方案,它对我有用。我目前在我的应用程序中使用它。

我引用:

我尚未测试此解决方案,但您可以尝试获取视频的缩略图。如果缩略图为空,则为音频,否则为视频。

Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoPath,
MediaStore.Images.Thumbnails.MINI_KIND);
于 2014-04-24T09:53:33.637 回答