本文整理汇总了Java中android.media.MediaMetadataRetriever.extractMetadata方法的典型用法代码示例。如果您正苦于以下问题:Java MediaMetadataRetriever.extractMetadata方法的具体用法?Java MediaMetadataRetriever.extractMetadata怎么用?Java MediaMetadataRetriever.extractMetadata使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类android.media.MediaMetadataRetriever
的用法示例。
在下文中一共展示了MediaMetadataRetriever.extractMetadata方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getVideoDuration
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
/**
* 从视频文件中读取视频长度
*/
public static long getVideoDuration(Context context, String videoFile) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//use one of overloaded setDataSource() functions to set your data source
String time;
try {
retriever.setDataSource(context, Uri.fromFile(new File(videoFile)));
time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
int width = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
int height = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
} finally {
try {
retriever.release();
} catch (Exception ex) {
// Ignore failures while cleaning up.
}
}
long timeInMillisec = Long.parseLong(time);
return timeInMillisec;
}
示例2: getFileMeta
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
/**
* Used to get information about the written file
*/
private void getFileMeta() {
if (absolutePath != null) {
try {
final MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(absolutePath);
final String duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
mmr.release();
if (DEBUG) {
MyLog.i(CLS_NAME, "recording duration: " + duration);
}
} catch (final RuntimeException e) {
if (DEBUG) {
MyLog.w(CLS_NAME, "RuntimeException: completeFileWrite");
e.printStackTrace();
}
}
}
}
示例3: parseMP3File
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
@TargetApi(Build.VERSION_CODES.GINGERBREAD_MR1)
public static MusicBean parseMP3File(String path) {
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
String name = null;
String singer = null;
String album = null;
long duration = 0;
try {
mmr.setDataSource(path);
name = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
singer = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
album = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
duration = Long.valueOf(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
mmr.release();
} catch (Exception e) {
e.printStackTrace();
return null;
}
return new MusicBean(name, singer, album, duration, path);
}
示例4: formatFileDuration
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
private String formatFileDuration(String path) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(path);
// 取得视频的长度(单位为毫秒)
String time = retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
// 取得视频的长度(单位为秒)
int totalS = Integer.valueOf(time) / 1000;
DecimalFormat df = new DecimalFormat("#.00");
String totalDuration = "";
if (totalS < 60) {
totalDuration = df.format((double) totalS) + "秒";
} else if (totalS < 3600) {
totalDuration = df.format((double) totalS / 60) + "分";
} else if (totalS < 3600*24) {
totalDuration = df.format((double) totalS / 3600) + "时";
}
return totalDuration;
}
示例5: getVideoInfor
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
/** 获取视频时长 **/
public static void getVideoInfor(int index) {
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
VideoInfo vInfo = videosInfo.get(index);
mmr.setDataSource(vInfo.videoPath);
String videoTime = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); // 播放时长单位为毫秒
String width = mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
String height = mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
String rotation = mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
if (rotation.equals("90") || rotation.equals("270")) {
width = mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
height = mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
}
vInfo.rotation = Integer.parseInt(rotation);
vInfo.videoTime = Integer.parseInt(videoTime);
vInfo.totalVideoTime = Integer.parseInt(videoTime);
vInfo.endVideoTime = Integer.parseInt(videoTime);
vInfo.width = Integer.parseInt(width);
vInfo.height = Integer.parseInt(height);
}
示例6: getMetaData
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
@TargetApi(10)
private static SparseArray<String> getMetaData (final String videoFile, JSONArray requestedMetaDatas) throws JSONException, IOException, RuntimeException {
File f = new File(videoFile);
SparseArray<String> returnArray = new SparseArray<>();
if (f.exists()) {
MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever();
metadataRetriever.setDataSource(f.getAbsolutePath());
for (int i = 0; i < requestedMetaDatas.length(); i++) {
int metaDataKey = requestedMetaDatas.getInt(i);
String metaDataValue = metadataRetriever.extractMetadata(metaDataKey);
if (metaDataValue != null) {
returnArray.put(metaDataKey, metaDataValue);
}
}
}
else {
throw new IOException("File: " + f.getAbsolutePath() + " doesn't exist");
}
return returnArray;
}
示例7: updateMovieInfo
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
@Override
protected void updateMovieInfo(final MediaMetadataRetriever metadata) {
super.updateMovieInfo(metadata);
mVideoWidth = mVideoHeight = mRotation = 0;
String value = metadata.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
if (!TextUtils.isEmpty(value)) {
mVideoWidth = Integer.parseInt(value);
}
value = metadata.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
if (!TextUtils.isEmpty(value)) {
mVideoHeight = Integer.parseInt(value);
}
value = metadata.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
if (!TextUtils.isEmpty(value)) {
mRotation = Integer.parseInt(value);
}
}
示例8: extractBitmap
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
public static Bitmap extractBitmap(String videoPath, int second) {
if (TextUtils.isEmpty(videoPath)) {
logd("extractBitmap empty video path");
return null;
}
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(videoPath);
// 取得视频的长度(单位为毫秒)
String time = retriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
// 取得视频的长度(单位为秒)
int total = Integer.valueOf(time) / 1000;
if (second < 0 || second > total) {
loge("unavalible second(" + second + "), total(" + total + ")");
return null;
}
Bitmap bitmap = retriever.getFrameAtTime(second * 1000 * 1000,
MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
return bitmap;
}
示例9: verifyLocationInFile
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
private void verifyLocationInFile(String fileName) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(fileName);
String location = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_LOCATION);
assertNotNull("No location information found in file " + fileName, location);
// parsing String location and recover the location inforamtion in floats
// Make sure the tolerance is very small - due to rounding errors.
// Get the position of the -/+ sign in location String, which indicates
// the beginning of the longtitude.
int index = location.lastIndexOf('-');
if (index == -1) {
index = location.lastIndexOf('+');
}
assertTrue("+ or - is not found", index != -1);
assertTrue("+ or - is only found at the beginning", index != 0);
float latitude = Float.parseFloat(location.substring(0, index - 1));
float longitude = Float.parseFloat(location.substring(index));
assertTrue("Incorrect latitude: " + latitude,
Math.abs(latitude - LATITUDE) <= TOLERANCE);
assertTrue("Incorrect longitude: " + longitude,
Math.abs(longitude - LONGITUDE) <= TOLERANCE);
retriever.release();
}
示例10: loadRotationMetdata
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
static void loadRotationMetdata(final LocalData data) {
final String path = data.getPath();
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setDataSource(path);
String rotation = retriever.extractMetadata(
MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
data.getMetadata().putString(ROTATION_KEY, rotation);
String val = retriever.extractMetadata(
MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
int width = Integer.parseInt(val);
data.getMetadata().putInt(WIDTH_KEY, width);
val = retriever.extractMetadata(
MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
int height = Integer.parseInt(val);
data.getMetadata().putInt(HEIGHT_KEY, height);
} catch (RuntimeException ex) {
// setDataSource() can cause RuntimeException beyond
// IllegalArgumentException. e.g: data contain *.avi file.
Log.e(TAG, "MediaMetdataRetriever.setDataSource() fail", ex);
}
}
示例11: getRotation
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
public int getRotation()
{
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
if (this.path != null)
retriever.setDataSource(this.path);
else if (this.fileDescriptor != null)
retriever.setDataSource(this.fileDescriptor);
else if (this.uri != null)
retriever.setDataSource(this.context, android.net.Uri.parse(this.uri.getString()));
else {
throw new IllegalStateException("File not set");
}
String rotation = retriever.extractMetadata(24);
retriever.release();
return Integer.parseInt(rotation);
}
示例12: getBasicMetaData
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
/**
* Creates an array of basic information about an audio file obtained through the
* MediaMetaDataRetriever. If a file does not provide MetaData, the filename will be used as
* the title.
* The array contains information as follows:
* [0] METADATA_KEY_ARTIST
* [1] METADATA_KEY_TITLE
* [2] METADATA_KEY_DURATION
*
* @param filePath path to the file
* @return String array with metadata.
*/
public static String[] getBasicMetaData(String filePath)
{
Log.d(DEBUG_TAG, "Reading audio metadata for " + filePath);
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(filePath);
String[] metaData = new String[3];
metaData[0] =
mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
metaData[1] =
mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
metaData[2] =
mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
if (metaData[0] == null)
{
metaData[0] = "-";
}
if (metaData[1] == null)
{
String[] pathSep = filePath.split("/");
metaData[1] = pathSep[pathSep.length - 1];
}
return metaData;
}
示例13: getMetaData
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
public static MetaData getMetaData(String localPath) {
int height = 0;
int width = 0;
int durationSec = 0;
MediaMetadataRetriever mmr = getMediaMetadataRetriever(localPath);
String heightStr = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
String widthStr = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
String durationStr = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
if (!TextUtils.isEmpty(heightStr)) {
height = Integer.parseInt(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
}
if (!TextUtils.isEmpty(widthStr)) {
width = Integer.parseInt(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
}
if (!TextUtils.isEmpty(durationStr)) {
int durationMs = Integer.parseInt(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
durationSec = (int) TimeUnit.MILLISECONDS.toSeconds(durationMs);
}
return new MetaData(height, width, durationSec);
}
示例14: getOutputVideoBitRate
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
private int getOutputVideoBitRate() {
int inputBitRate = mOutputVideoBitRate;
if (mInputVideoComponent.getTrackFormat().containsKey(MediaFormat.KEY_BIT_RATE)) {
inputBitRate = mInputVideoComponent.getTrackFormat().getInteger(MediaFormat.KEY_BIT_RATE);
} else {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(mContext, mSrcUri);
String bitrate = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE);
if (bitrate != null) {
inputBitRate = Integer.parseInt(bitrate);
}
}
if (DeviceUtils.deviceisOnBlacklist()) {
return mOutputVideoBitRate;
} else {
return Math.min(inputBitRate, mOutputVideoBitRate);
}
}
示例15: initMediaDuration
import android.media.MediaMetadataRetriever; //导入方法依赖的package包/类
protected void initMediaDuration() throws MmsException {
if (mUri == null) {
throw new IllegalArgumentException("Uri may not be null.");
}
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
int duration = 0;
if(!isVcard()){
try {
retriever.setDataSource(mContext, mUri);
String dur = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
if (dur != null) {
duration = Integer.parseInt(dur);
}
mDuration = duration;
} catch (Exception ex) {
Log.e(TAG, "MediaMetadataRetriever failed to get duration for " + mUri.getPath(), ex);
throw new MmsException(ex);
} finally {
retriever.release();
}
}
}