如何确定Android上的视频宽度和高度
我有一个视频文件,我想获得视频的宽度和高度。我不想玩它,只是为了获得大小。 我试着使用的MediaPlayer:如何确定Android上的视频宽度和高度
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(uriString);
mp.prepare();
int width = mp.getVideoWidth();
int height = mp.getVideoHeight();
,但它的宽度和高度,则返回0,因为VideoSizeChangedEvent还不火。 如何获得视频的宽度和高度?
UPD:我需要的API版本7
private static final Uri MOVIE_URI = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
private static final String[] MOVIE_PJT = new String[] {
MediaStore.Video.Media._ID, MediaStore.Video.Media.DATA,
MediaStore.Video.Media.TITLE, MediaStore.Video.Media.DATE_TAKEN,
MediaStore.Video.Media.MIME_TYPE, MediaStore.Video.Media.DURATION,
MediaStore.Video.Media.SIZE, MediaStore.Video.Media.RESOLUTION };
尝试这个系统由内容提供商来查询。它会返回影片的一些有用的信息(本地文件)
尝试使用此代码,让我知道,如果任何问题..
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
Bitmap bmp = null;
try
{
retriever.setDataSource("...location of your video file");
bmp = retriever.getFrameAtTime();
videoHeight=bmp.getHeight();
videoWidth=bmp.getWidth();
}
API第7级的解决方案:
// get video dimensions
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(filename);
mp.prepare();
mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
int orient = -1;
if(width < height)
orient = 1;
else
orient = 0;
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这工作在API等级10以上:
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource("/path/to/video.mp4");
int width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
int height = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
retriever.release();
作品!但不工作在Android 6.0 – 2016-02-05 08:04:22
@TigranSarkisian确实在安卓6.0? – 2017-04-27 04:07:32
它的工作原理API 10后的应用程序崩溃,但它会抛出'IllegalArgumentException'如果路径无效或文件不存在。 – 2017-06-23 10:24:05
这为我工作
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(final MediaPlayer mp) {
int width = mp.getVideoWidth();
int height = mp.getVideoHeight();
}
});
这set of utilities与Android的大小抽象的工作。
它包含一个类SizeFromVideoFile.java 您可以使用它像这样:
ISize size = new SizeFromVideoFile(videoFilePath);
size.width();
size.hight();
至少在某些时候,'RESOLUTION'为空。 (我还不确定什么时候它是非空的,但是当我遇到'RESOLUTION'时,我遇到了这个问题寻找解决方法(在姜饼上,唉) – 2012-02-15 01:11:32