10

我想检索视频的高度和宽度,为此我使用 MediaMetadataRetriever 类。它在大多数情况下都可以正常工作,但在少数情况下高度和宽度可以互换。

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

我当前的代码:

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

我怎样才能得到正确的值?谢谢

4

1 回答 1

14

在过去的一天左右,我一直在尝试自己解决这个问题,最终我不得不通过实验来解决它。

            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,则宽度和高度将被调换。

于 2017-11-02T09:33:50.510 回答