Android VideoView 中纵向视频方向错误
我在 Android 设备上以肖像方向捕获一个新视频,如下所示:
Intent intent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intent, 1886);
它给了我这个文件:“/mnt/sdcard/DCIM/Camera/video-2012-02-02-10-45-48.mp4”
然后我像这样播放:
private VideoView videoView = (VideoView) findViewById(R.id.videoView);
String videoUrl = "/mnt/sdcard/DCIM/Camera/video-2012-02-02-10-45-48.mp4";
videoView.setMediaController(new MediaController(this));
videoView.setVideoURI(Uri.parse(videoUrl));
videoView.start();
这是我的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView
android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true" />
</RelativeLayout>
当我在标准 Android 画廊中播放它时,方向是正确的。但是当我在上面的 VideoView 中播放视频时,它旋转了 90 度。横向效果很好,唯一的问题是纵向视频。
如何在 VideoView 中旋转该视频?
另外,我如何以编程方式确定方向?
I capture a new video in PORTRAIT orientation on an Android device like this:
Intent intent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intent, 1886);
and it gives me this file: "/mnt/sdcard/DCIM/Camera/video-2012-02-02-10-45-48.mp4"
Then I play it like this:
private VideoView videoView = (VideoView) findViewById(R.id.videoView);
String videoUrl = "/mnt/sdcard/DCIM/Camera/video-2012-02-02-10-45-48.mp4";
videoView.setMediaController(new MediaController(this));
videoView.setVideoURI(Uri.parse(videoUrl));
videoView.start();
Here's my layout file:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView
android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true" />
</RelativeLayout>
When I play it in the standard Android gallery, the orientation is correct. But when I play the video in the VideoView above, it's rotated 90 degrees. Landscape works great, the only problem are portrait videos.
How can I rotate this video in the VideoView?
Also, how can I programmatically determine the orientation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要首先确定捕获视频的方向。大多数新型智能手机都使用横向相机,但也有一些版本使用纵向相机。要确定方向,您可以获取框架的长度和宽度,然后进行比较。当您开始检查该活动是否定向视频,并根据活动定向的变化。
代码示例:
不要忘记在样式中或以编程方式在活动中隐藏 ActionBar。
You need to initially determine the orientation of the captured video. Most new smartphones use landscape orientation for the camera although there are versions which use portrait. To determine the orientation you can take the length and width of the frame then compare them. When you start to check whether that activity orientation video, and depending on the change of orientation activities.
Code Example:
Don't forget to hide the ActionBar in styles, or programmatically in activity.