【问题标题】:How to tell if .3gp file is audio or video in android如何判断.3gp文件是android中的音频还是视频
【发布时间】:2011-12-16 07:39:22
【问题描述】:

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

MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);

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

【问题讨论】:

    标签: android mime-types android-mediaplayer 3gp


    【解决方案1】:

    METADATA_KEY_HAS_VIDEO

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

    【讨论】:

      【解决方案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;
          }
      

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

      【讨论】:

      • mp.prepare();实际上是必需的(尽管文档说的不同)。在我的测试中,如果我没有在 mediaplayer 对象上调用 prepare ,则无论是音频还是视频,高度始终为 0。
      【解决方案3】:

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

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

      如果thumbnailnull,则为音频,否则为视频。

      【讨论】:

        【解决方案4】:

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

        我引用:

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

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

        【讨论】:

          猜你喜欢
          • 2012-09-05
          • 2021-05-27
          • 1970-01-01
          • 2021-02-11
          • 1970-01-01
          • 2013-11-01
          • 1970-01-01
          • 2013-04-26
          • 1970-01-01
          相关资源
          最近更新 更多