问题:某些安卓设备(列在问题的底部)在使用setOrientationHint(int degrees)功能拍摄带有正面摄像头的视频时会表现出意想不到的行为。预期的行为是视频顺时针旋转,但这些设备逆时针旋转视频。
我的目标:识别相机设置或硬件方向中的变量,这样我就可以预见地知道什么时候会发生这种情况。具体来说,我想避免这些电话在我的代码中的特殊大写!
进一步解释:--我使用标准的MediaRecorder对象录制视频,在准备录制时,我使用setOrientationHint()设置了视频的方向。在setOrientationHint()的文档中,为degrees参数指定了以下内容:
度-以度为单位顺时针旋转的角度。支撑角为0、90、180和270。
该功能旨在添加包含旋转角度的组合矩阵,以便视频播放器能够按预期显示视频。所以,我要做的是 class,并使用它作为setOrientationHint fn中的degrees参数。(我尝试过用AOSP作为指南对这段代码进行修改,但结果完全相同。)
一个真实的例子:三星GalaxyS3正面摄像头(以及其他大多数摄像头)的硬件方向为270,所以我在录制时使用这个,最终的视频将被正确显示。HTC同样会返回同一台相机的硬件方向为270,但只有当我在degrees fn中使用90作为setOrientationHint参数时,才能正确显示。如果我像其他手机一样使用270的硬件定位,视频就会颠倒过来。
NB: setOrientationHint()函数包括一个警告:
注意,在播放过程中,一些视频播放器可能会选择忽略视频中的组合矩阵。
然而,这不是正在发生的事情,因为我可以很容易地在这些手机上解决这个问题,如果我伪造它,把90而不是270。
我见过的手机具体展示了这个问题: HTC (PH39100)运行Android4.0.3,宏达EVO4G (PG86100)运行Android4.0.3,宏达迅雷(ADR6400L)运行Android2.3.4。请注意,他们都是HTC手机。也许宏达电的某个人把顺时针误认为是逆时针。
发布于 2013-03-05 04:57:13
是的,宏达电的手机向错误的方向旋转前面对摄像头。而不是试图猜测,我最终添加了一个设置屏幕,可以拍摄两张照片,第二张旋转90度。然后,当我通过不同的旋转方向和角度组合时,用户可以继续点击next,直到两幅图片都以相同的方式出现。
https://stackoverflow.com/questions/14763204
复制相似问题