原文: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.下面通过一个小例子演示如何从一个音乐文件中取得部分媒体信息:
public class MainActivity extends Activity { private static final String TAG = "MainActivity" ; @TargetApi ( 10 ) @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); MediaMetadataRetriever mmr = new MediaMetadataRetriever(); String str = getExternalStorageDirectory() + "music/hetangyuese.mp3" ; Log.d(TAG, "str:" + str); try { mmr.setDataSource(str); String title = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); Log.d(TAG, "title:" + title); String album = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); Log.d(TAG, "album:" + album); String mime = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE); Log.d(TAG, "mime:" + mime); String artist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); Log.d(TAG, "artist:" + artist); String duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); Log.d(TAG, "duration:" + duration); String bitrate = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE); Log.d(TAG, "bitrate:" +bitrate); String date = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE); Log.d(TAG, "date:" + date); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true ; } public static String getExternalStorageDirectory() { return Environment.getExternalStorageDirectory() + "/" ; } }
信息输出如下:
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类的简单介绍。