MediaMetadataRetriever

MediaMetadataRetriever

我想检索视频的高度和宽度,我正在使用MediaMetadataRetriever类。它在大多数情况下工作正常,但在少数情况下高度和宽度是互换的。
我想这可能是因为方向的改变。
我的当前代码:

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

如何获得正确的值?谢谢你

最佳答案

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

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

07-24 09:47
查看更多