9

問題:setOrientationHint(int degrees)特定の Android デバイス (質問の下部にリストされています) は、前面カメラで撮影したビデオにこの機能を使用すると、予期しない動作を示します。予想される動作はビデオが時計回りに回転することですが、これらのデバイスはビデオを反時計回りに回転します。

私の目標:カメラの設定またはハードウェアの向きの変数を特定して、これがいつ発生するかを予測できるようにすること。具体的には、コード内でこれらの電話を特別にケーシングすることは避けたいと思います!

詳細説明:標準MediaRecorderオブジェクトを使用してビデオを録画しています。録画の準備として、 を使用してビデオの向きを設定しましたsetOrientationHint()。のドキュメントでは、パラメータsetOrientationHint()に次のように指定されています。degrees

–– 時計回りに回転する角度 (度単位)。サポートされている角度は、0、90、180、および 270 です。

この関数は、ビデオ プレーヤーが意図したとおりにビデオを表示できるように、回転角度を含む合成マトリックスを追加することを目的としています。そのため、クラスを使用してカメラ ハードウェアの向きを取得し、CameraInfoそれをfnのdegreesパラメーターとして使用します。setOrientationHint(AOSP をガイドとして使用して、このコードのバリエーションを試しましたが、まったく同じ結果が得られました。)

実際の例: Samsung Galaxy S3 前面カメラ (および実際には他のほとんどのカメラ) のハードウェアの向きは 270 であるため、録画時にこれを使用すると、結果のビデオが正しく表示されます。HTC Vivid は、同じカメラに対して同様に 270 のハードウェア方向を返しますが、 fnのdegreesパラメーターとして 90 を使用した場合にのみ正しく表示されます。setOrientationHint他の電話のようにハードウェアの向きを 270 にすると、ビデオが上下逆になります。

注意:関数setOrientationHint()には警告が含まれています。

一部のビデオ プレーヤーは、再生中にビデオの構成マトリックスを無視することを選択する場合があることに注意してください。

ただし、これは起こっていることではありません。これらの電話でこの問題を偽装して 270 の代わりに 90 を入力すれば、簡単に修正できるからです。

私が確認したスマートフォンでは、特にこの問題が発生しています: Android 4.0.3 を実行する HTC Vivid (PH39100)、Android 4.0.3 を実行する HTC EVO 4G (PG86100)、Android 2.3.4 を実行する HTC Thunderbolt (ADR6400L)。これらはすべて HTC 電話であることに注意してください。おそらく、HTC の誰かが時計回りを反時計回りと間違えたのでしょう。

4

1 に答える 1

1

はい、HTC フォンは前面カメラに対して間違った方向に回転します。推測しようとする代わりに、2 枚の写真を 90 度回転させて 2 枚の写真を撮る設定画面を追加することになりました。次に、ユーザーは、両方の画像が同じ向きになるまで、さまざまな回転方向と角度の組み合わせを循環しながら、次にヒットし続けることができました。

于 2013-03-05T04:57:13.437 に答える