是否有可能在Android中获得视频的分辨率?

我正在寻找一种方法来获得Android中任何给定视频的分辨率。 它不需要使用Android以外的其他格式,但如果可以的话,它会很棒。 如果您不确定Android中支持的格式,请参阅此页面:

http://developer.android.com/guide/appendix/media-formats.html

我认为使用MediaPlayer类可以做我想做的事,但这看起来非常愚蠢和低效。 另外,我想要一种相对较快的方式。

如果这有什么不同,我的目标是Android 3.0+。 Honeycomb也支持.mkv文件,但直到Android 4.0才正式支持。


您可以使用MediaMetadataRetriever检索有关视频文件的分辨率信息。 您将使用extractMetadata()方法并使用METADATA_KEY_VIDEO_HEIGHTMETADATA_KEY_VIDEO_WIDTH常量。 所以你会这样做:

MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(/* file descriptor or file path goes here */);
String height = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
String width = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);

欺骗API 10+:

MediaMetadataRetriever mRetriever = new MediaMetadataRetriever();
mRetriever.setDataSource("video_file_path");
Bitmap frame = mRetriever.getFrameAtTime();

int width = frame.getWidth();
int height = frame.getHeight();

我们很简单地从我们的视频中随机选取一个帧并检测其宽度和高度。


如果您有视频内容URI,那么您也可以使用内容提供商查询

喜欢

    Cursor mediaCursor = getContentResolver().query(
                        videoContentURI,
                        {MediaStore.Video.Media.RESOLUTION}, null, null, null);
        if (mediaCursor != null) {
                    if (mediaCursor.moveToFirst()) {
        //The resolution of the video file, formatted as "XxY"
        String resolution=mediaCursor.getString(mediaCursor
                                  .getColumnIndex(MediaStore.Video.Media.RESOLUTION));
    }
}

您可以查看以下帖子,从视频物理路径获取ContentURI

链接地址: http://www.djcxy.com/p/84029.html

上一篇: Is it possible to get the resolution of a video in Android?

下一篇: Optimize website for touch devices