3

私はいくつかのビデオを記録し、リスト内のビデオを管理する Android ビデオ アプリを実行しています。ビデオは適切に撮影されていますが、横向きに表示されていました (デバイスが実際に横向きモードの場合、縦向きモードでビデオを見ることができるということです)。この問題を解決する方法を教えてください。以下のコードを使用して記録しています

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(cameraIntent,120);

そして、ビデオをギャラリーに保存します。カスタム ビデオ録画に関連するコードも役立ちます。下の画像で私の問題が何であるかがわかります。私は置くことのような多くの方法を試しましsetDisplayOrientation()setOrientationHint()。この問題の解決策がまったくないのだろうか?次に、ビデオアプリを開発している数。誰か助けてください。

thisthisリンクも参照しました。

ここに画像の説明を入力

4

3 に答える 3

1

ちょっとしたハックになります (ただし、この投稿によると、別の方向でビデオを録画する方法はありません) が、API レベル 14 以降では、Media Effectsを使用して を回転させることができますVideoView

于 2013-02-26T14:59:13.040 に答える
0

あなたが示す記録コードは正しいようです。ICS を搭載した Samsung S2 でコードをテストしたところ、ビデオは正しい向きで再生されました。再生用のコードは表示されません。多分それが問題があるところです:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 120) { // i personally prefer using a constant here
        VideoView videoView = (VideoView) findViewById(R.id.videoView);
        videoView.setVideoURI(data.getData());
        videoView.start();
    }
}

videoView のレイアウト xml は非常に単純です。

<VideoView
    android:id="@+id/videoView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

上記が機能しない場合は、EXTRA_SCREEN_ORIENTATION を別の値に設定してみてください。私のデバイスでは、YMMV では違いがないように見えました。コードは次のとおりです。さらに、カスタムのビデオ録画コードを追加するように求められたため、さらに追加しました。

private static final int RECORD_VIDEO = 120;

private void startRecording() {
    Intent cameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); // low quality
    cameraIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 5); // limit to 5 seconds
    startActivityForResult(cameraIntent, RECORD_VIDEO);
}

さらに多くのエクストラがあります: http://developer.android.com/reference/android/provider/MediaStore.html#EXTRA_DURATION_LIMIT

于 2013-02-28T07:25:26.680 に答える