gpt4 book ai didi

android - setOrientationHint 在某些手机的前置摄像头 (HTC) 上逆时针旋转视频

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:48 25 4
gpt4 key购买 nike

问题:某些 Android 设备(列在问题底部)在对正面拍摄的视频使用 setOrientationHint(int degrees) 函数时表现出意外行为面对相机。预期的行为是视频顺时针旋转,但这些设备逆时针旋转视频。

我的目标:在相机设置或硬件方向中识别一个变量,使我能够预测到何时会发生这种情况。具体来说,我想避免在我的代码中对这些电话进行特殊封装!

进一步说明:我正在使用标准的 MediaRecorder 对象录制视频,并且在准备录制时,我使用 setOrientationHint() 设置了视频的方向.在 setOrientationHint() 的文档中,为 degrees 参数指定了以下内容:

degrees –– the angle to be rotated clockwise in degrees. The supported angles are 0, 90, 180, and 270.

该函数旨在添加一个包含旋转角度的合成矩阵,以便视频播放器可以按预期显示视频。所以,我所做的是 I get the camera hardware's orientation using the CameraInfo class并将其用作 setOrientationHint fn 中的 degrees 参数。 (我尝试使用 AOSP 作为指南对这段代码进行变体,但我得到了完全相同的结果。)

一个真实的例子:Samsung Galaxy S3 前置摄像头(事实上大多数其他摄像头)的硬件方向为 270,所以我在录制时使用它,生成的视频是正确显示。 HTC Vivid 将类似地为同一相机返回 270 的硬件方向,但只有当我在 setOrientationHint fn 中使用 90 作为 degrees 参数时才会正确显示。如果我像其他任何手机一样使用硬件方向的 270,视频将颠倒。

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

Note that some video players may choose to ignore the compostion matrix in a video during playback.

但是,这不是正在发生的事情,因为如果我伪造它并输入 90 而不是 270,我可以轻松地解决这些手机上的这个问题。

我见过的具体出现此问题的手机:运行 Android 4.0.3 的 HTC Vivid (PH39100)、运行 Android 4.0.3 的 HTC EVO 4G (PG86100)、运行 Android 的 HTC Thunderbolt (ADR6400L) 2.3.4.请注意,它们都是 HTC 手机。也许 HTC 的某个人将顺时针误认为是逆时针。

最佳答案

是的,HTC 手机的前置摄像头旋转方向错误。我没有尝试猜测,而是添加了一个设置屏幕,可以拍摄两张照片,第二张旋转 90 度。然后,当我循环不同的旋转方向和角度组合时,用户可以继续点击下一个,直到两张图片以相同的方向显示。

关于android - setOrientationHint 在某些手机的前置摄像头 (HTC) 上逆时针旋转视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14763204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com