setOrientationHint在一些手机的前置摄像头(HTC)上逆时针旋转video

问题:某些Android设备(问题底部列出)在使用前置摄像头拍摄的video的setOrientationHint(int degrees)function时会出现意外的行为。 预期的行为是video顺时针旋转,但这些设备逆时针旋转video。

我的目标:在相机设置或硬件方向内识别variables,使我可以预知何时会发生这种情况。 具体来说, 我想避免在我的代码中特别套住这些手机!

更多解释:我使用标准的MediaRecorder对象录制video,在准备录制时,使用setOrientationHint()设置video的方向。 在setOrientationHint()的文档中,为degrees参数指定了以下内容:

– 以度数顺时针旋转的angular度。 支持的angular度是0,90,180和270。

该function旨在添加包含旋转angular度的合成matrix,以便video播放器可按预期显示video。 所以,我所做的是使用CameraInfo类获取相机硬件的方向, CameraInfo其用作setOrientationHint fn中的degrees参数。 (我已经尝试使用AOSP作为指导,对此代码进行修改,但是我得到了完全相同的结果。)

一个真实的例子:三星Galaxy S3前置摄像头(以及其他大多数其他摄像头)的硬件方向将为270,因此在录制时使用此方式,并且所得video显示正确。 HTC Vivid同样会为相同的相机返回270的硬件方向,但只有在setOrientationHint fn中使用90 degrees作为degrees参数时才能正确显示。 如果我像其他手机一样使用270的硬件定位,则video将会颠倒。

注意: setOrientationHint()函数包含一个警告:

请注意,某些video播放器可能会在播放期间忽略video中的构图matrix。

但是,这不是发生的事情,因为我可以很容易地解决这个问题,如果我假装它,把90而不是270。

我曾见过的手机具体展示了这个问题:运行Android 4.0.3的HTC Vivid(PH39100),运行Android 4.0.3的HTC EVO 4G(PG86100),运行Android 2.3.4的HTC Thunderbolt(ADR6400L)。 注意他们都是HTC手机。 也许有人在HTC错误顺时针逆时针。

Solutions Collecting From Web of "setOrientationHint在一些手机的前置摄像头(HTC)上逆时针旋转video"

是的,HTC手机朝前置摄像头的方向错误。 而不是猜测,我最终添加了一个设置屏幕,将采取两个图片与第二个旋转90度。 然后,当我循环通过不同的旋转方向和angular度组合时,用户可以继续点击,直到两个图片以相同的方式出现。