本文介绍了Android MediaMetadataRetriever错误的视频高度和宽度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想获取视频的高度和宽度,为此我正在使用MediaMetadataRetriever类.在大多数情况下,它是正确的,但是在少数情况下,高度和宽度可以互换.

I want to retrieve height and width of video, I am using MediaMetadataRetriever class for this. It is working correct for most of the case, but for few case height and width are interchanged.

我认为这可能是由于方向改变而发生的.

I think this might be happening because of orientation change.

我当前的代码:

MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
        metaRetriever.setDataSource(videoPath);
        videoHeight = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
        videoWidth = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);

如何获取正确的值?谢谢

How can i get correct values? Thank you

推荐答案

最后一天左右,我一直试图自己解决这个问题,最终我不得不通过实验来解决它.

I've been trying to figure this out myself for the last day or so, I eventually had to solve it experimentally.

            File file = new File(path);
            if (file.exists()) {
                MediaMetadataRetriever retriever = new MediaMetadataRetriever();
                retriever.setDataSource(file.getAbsolutePath());
                String metaRotation = retriever.extractMetadata(METADATA_KEY_VIDEO_ROTATION);
                int rotation = metaRotation == null ? 0 : Integer.parseInt(metaRotation);
                Log.i("Test", "Rotation = " + rotation);
            }

如果旋转角度为90或270,宽度和高度将被转置.

If the rotation is 90 or 270 the width and height will be transposed.

这篇关于Android MediaMetadataRetriever错误的视频高度和宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 13:05