原文:http://blog.csdn.net/ameyume/article/details/7849641

API说明:MediaMetadataRetriever class provides a unified interface for retrieving frame and meta data from an input media file.

MediaMetadataRetriever类提供了一个统一的接口用于从一个输入媒体文件中取得帧和元数据。

API官方链接:http://developer.android.com/reference/android/media/MediaMetadataRetriever.html

1.下面通过一个小例子演示如何从一个音乐文件中取得部分媒体信息:

[java] view plaincopy
  1. public class MainActivity extends Activity {
  2. private static final String TAG = "MainActivity";
  3. @TargetApi(10)
  4. @Override
  5. public void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. MediaMetadataRetriever mmr = new MediaMetadataRetriever();
  9. String str = getExternalStorageDirectory() + "music/hetangyuese.mp3";
  10. Log.d(TAG, "str:" + str);
  11. try {
  12. mmr.setDataSource(str);
  13. String title = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); // api level 10, 即从GB2.3.3开始有此功能
  14. Log.d(TAG, "title:" + title);
  15. String album = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
  16. Log.d(TAG, "album:" + album);
  17. String mime = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE);
  18. Log.d(TAG, "mime:" + mime);
  19. String artist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
  20. Log.d(TAG, "artist:" + artist);
  21. String duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); // 播放时长单位为毫秒
  22. Log.d(TAG, "duration:" + duration);
  23. String bitrate = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE); // 从api level 14才有,即从ICS4.0才有此功能
  24. Log.d(TAG, "bitrate:" +bitrate);
  25. String date = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE);
  26. Log.d(TAG, "date:" + date);
  27. } catch (IllegalArgumentException e) {
  28. // TODO Auto-generated catch block
  29. e.printStackTrace();
  30. } catch (IllegalStateException e) {
  31. // TODO Auto-generated catch block
  32. e.printStackTrace();
  33. }
  34. }
  35. @Override
  36. public boolean onCreateOptionsMenu(Menu menu) {
  37. getMenuInflater().inflate(R.menu.activity_main, menu);
  38. return true;
  39. }
  40. public static String getExternalStorageDirectory()
  41. {
  42. return Environment.getExternalStorageDirectory() + "/";
  43. }
  44. }

信息输出如下:

08-09 15:53:52.119: D/MainActivity(5293): str:/mnt/sdcard/music/hetangyuese.mp3
08-09 15:53:52.810: D/MainActivity(5293): title:荷塘月色
08-09 15:53:52.829: D/MainActivity(5293): album:我从草原来
08-09 15:53:52.859: D/MainActivity(5293): mime:audio/mpeg
08-09 15:53:52.868: D/MainActivity(5293): artist:凤凰传奇
08-09 15:53:52.893: D/MainActivity(5293): duration:9172
08-09 15:53:52.899: D/MainActivity(5293): bitrate:128000
08-09 15:53:52.909: D/MainActivity(5293): date:null

2.如果是视频文件,还可以通过getFrameAtTime方法取得指定time位置的Bitmap,即可以实现抓图(包括缩略图)功能。

通过查看API,没发现有取得采样率(samplerate)的keycode,可能在后续版本中会提供,期待中。

以上就是对MediaMetadataRetriever类的简单介绍。

android获取mp3/mp4媒体信息相关推荐

  1. php读取mp3信息,PHP获取MP3的媒体标签信息

    PHP如何获取MP3的媒体标签信息?本文主要介绍了PHP获取音频文件的相关信息的相关资料.希望对大家有所帮助. 项目需求:现在有一个音频文件上传的功能,在上传后PHP需要获取这个音频文件的相关信息,例 ...

  2. Android获取mp3音频文件播放总时长

    Android获取mp3音频文件播放总时长 一般是需要文件的绝对路径,需要读取文件,转成媒体类解析,最好获取播放时长,然后关闭资源. /** * 获取音频文件的总时长大小 * * @param fil ...

  3. Android获取cpu和内存信息、网址的代码

    android获取手机cpu并判断是单核还是多核 /**  * Gets the number of cores available in this device, across all proces ...

  4. android 获取apk的版本信息

    今天,简单讲讲android如何获取apk的版本信息. 这个很简单,但是之前还是查找了资料,所以记录一下. 一.应用程序得到自己的版本信息 /*** 得到当前应用版本名称的方法* * @param c ...

  5. android获取进程内存使用信息、一键加速(内存清理)与进程重要级别解析

    android获取进程内存使用信息.一键加速(内存清理)与进程重要级别解析 获取进程内存使用信息 获取单个或多个进程 获取系统内存状态的信息 MemoryInfo说明 内存清理 killBackgro ...

  6. android获取apk版本号,android 获取apk的版本信息

    释放双眼,带上耳机,听听看~! 今天,简单讲讲android如何获取apk的版本信息. 这个很简单,但是之前还是查找了资料,所以记录一下. 一.应用程序得到自己的版本信息 /** * 得到当前应用版本 ...

  7. Android获取手机应用程序包的信息

    2019独角兽企业重金招聘Python工程师标准>>> 今天写了一个获取手机程序相关信息的demo,以下是demo的运行结果. 这是项目的结构. 下面是项目的具体代码: 1.Main ...

  8. Android获取设备内存数据信息

    App分配内存 首先,我们通过Android系统提供的方法获取 分配给App本身的运行数据信息,这里我们能获取系统分配给App的最大内存信息(这个数据根据不同的机型可能会不一样),当前已分配内存大小, ...

  9. Android获取系统的硬件信息、系统版本以及如何检测ROM类型

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52438706 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

最新文章

  1. 女生参加web前端培训可以吗
  2. Java修改全文数字,求大神帮我修改下java计算机代码,数字键只有0和8能用
  3. AI理论知识基础(19)-线性变换(1)
  4. 【Linux】一步一步学Linux——groupdel命令(88)
  5. oc引导win方法_[拯救老机型]机械革命X6/X5四代标压系列OC测试版更新
  6. 晶振,数字电路的心脏~
  7. mac apache服务器
  8. P5290-[十二省联考2019]春节十二响【贪心,堆】
  9. python textwrap_[Python标准库]textwrap——格式化文本段落
  10. MySQL进阶(DDL与DML)
  11. 企业大数据的主要竞争优势
  12. mysql inner 连接多表_MySQL数据库之多表查询inner join内连接
  13. ps切图导出html,ps网页切图-如何用PS切图和输出网页
  14. 内集理论是处理非标准分析的新方法
  15. 招5000人!美团2023届校园招聘全面启动
  16. [Pytorch系列-71]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 使用预训练模型训练pix2pix模型
  17. 轻快PDF阅读器怎么阅读电子书
  18. 为什么amd显卡便宜却买的人少_这7张显卡现在最好不要买,千万不要花钱当冤大头...
  19. HTML设置水平分割线
  20. Win7如何显示/隐藏Administrator账号

热门文章

  1. xcode 4,2 for Mac 10.6.8
  2. 学习Jsoup(二)
  3. Java并发编程笔记
  4. 计算机体系结构现状及发展论文,计算机体系结构的发展及技术问题探讨
  5. 看门狗计算机丢失xinput13.dll,windows10系统打开程序提示丢失xinput13dll怎么办
  6. java positive,Java DecimalStyle withPositiveSign()用法及代码示例
  7. texstudio 使用方法_TeXstudio怎么使用,TeXstudio使用教程解析
  8. java ascii码转字符_一文让你读懂JAVA.IO、字符编码、
  9. Ipython Notebook ipynb文件转化为Python脚本
  10. javaJavaScript DOM