【发布时间】:2017-11-13 07:59:27
【问题描述】:
我目前正在通过执行以下操作检测所选视频的宽度和高度:
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(this, mVideoUri);
String height = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
String width = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
清单中的活动:
<activity android:name=".TrimVideoActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
/>
如果我烤了宽度和高度,它总是返回w : 1920 h : 1080,无论视频的尺寸是多少。我认为它正在返回设备的宽度和高度。
我有什么遗漏或做错了吗?
编辑
通过@VladMatvienko 建议的链接,我能够获得视频文件的正确宽度和高度,这就是我实现它的方式:
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
Bitmap bmp = null;
retriever.setDataSource(this, mVideoUri);
bmp = retriever.getFrameAtTime();
String videoWidth = String.valueOf(bmp.getWidth());
String videoHeight = String.valueOf(bmp.getHeight());
现在我想根据结果(宽度/高度)旋转屏幕,我尝试了以下操作:
int w = Integer.parseInt(videoWidth);
int h = Integer.parseInt(videoHeight);
if (w > h) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} if(w < h) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
但是,当宽度小于高度时,屏幕总是旋转为横向,而不是设置为纵向?
【问题讨论】:
-
这更像是一种解决方法,但我认为它应该可以工作:stackoverflow.com/a/9077712/1568530
-
@VladMatvienko 谢谢,我会试试这个。
-
@VladMatvienko 你能看看我的编辑吗?
-
如果您的宽度和高度正确,请检查调试。这完全是另一个问题,应该作为另一个问题提出。
-
@VladMatvienko 好的,我会问一个新问题
标签: android android-orientation