0

メディア レコーダーを使用してビデオを録画していますsurfaceview。録画していますが、表示角度が 90 度ずれています。実際の部屋の録画とは異なります。つまり、アプリで部屋を録画している場合、表示が 90 度ずれます。部屋の天井は左側にあるので、あなたの部屋のディスプレイになります。これを解決して直角ビデオで記録するのを手伝ってくれる人がいます。参照用のコードは次のとおりです。ここで私のコーディングを確認してください
main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<SurfaceView
  android:id="@+id/videoview" 
  android:layout_height="480px" android:layout_width="248dp"/>
<Button
  android:id="@+id/mybutton"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="REC"
  android:textSize="12dp"/> 
</RelativeLayout>` 

`
ここに私のマニフェストファイルがあります

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".SurfaceAngleRecActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>`  


`そしてここに私のコードがあります:

SurfaceAngleRecActivity.java                                        
public class SurfaceAngleRecActivity extends Activity implements SurfaceHolder.Callback
        {
        MediaRecorder mediaRecorder;
        SurfaceHolder surfaceHolder;
        boolean recording;
        Button record;
        MediaPlayer mediaPlayer;
    boolean pausing = false;

        String PlayPath ="/sdcard/myvideo.mp4";
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
       {
           super.onCreate(savedInstanceState);
           mediaRecorder = new MediaRecorder();
           initMediaRecorder();

           setContentView(R.layout.main);
           recording = false;


           SurfaceView myVideoView = (SurfaceView)findViewById(R.id.videoview);
           surfaceHolder = myVideoView.getHolder();
           surfaceHolder.addCallback(this);
           surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

           record=(Button)findViewById(R.id.mybutton);

           record.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(!recording)
               {
                   mediaRecorder.start();
                   recording = true;
                   //Stop.setVisibility(View.VISIBLE);
                   //Record.setVisibility(View.INVISIBLE);
                   record.setText("STOP");
                   //Play.setEnabled(false);
                   //Pause.setEnabled(false);
               }else
               {
                   mediaRecorder.stop();
                   mediaRecorder.release();
                   recording = false;
                   //Record.setVisibility(View.VISIBLE);
                   //Stop.setVisibility(View.INVISIBLE);
                   //Record.setText("Record");
                   //Play.setEnabled(true);
                   //Pause.setEnabled(true);
                  // finish();
                   }
            }
        });

         }

        public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {
        // TODO Auto-generated method stub

        }
        public void surfaceCreated(SurfaceHolder holder) {
            // TODO Auto-generated method stub
            prepareMediaRecorder();
        }
        public void surfaceDestroyed(SurfaceHolder holder) {
            // TODO Auto-generated method stub

        }
        private void initMediaRecorder()
           {
               mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
               mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
               //File file=new File(Environment.getExternalStorageDirectory(), PlayPath);
               CamcorderProfile camcorderProfile_HQ =CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
               mediaRecorder.setProfile(camcorderProfile_HQ);
               mediaRecorder.setOutputFile("/sdcard/myvideo.mp4");
               //mediaRecorder.setVideoSize(20, 20);
               //mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
           //mediaRecorder.setMaxFileSize(5000000); // Set max file size 5M
           }

           private void prepareMediaRecorder()
           {
               mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
               try
               {
                   mediaRecorder.prepare();
                   //mediaRecorder.setVideoSize(150, 200);
               }
               catch (IllegalStateException e) 
               {
                   //TODO Auto-generated catch block
                   e.printStackTrace();
               }
               catch (IOException e) 
               {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }
           }

        }`
4

2 に答える 2

0

マニフェストでアクティビティの向きを横向きに変更します。

<application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".SurfaceAngleRecActivity" android:screenOrientation="landscape" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>

于 2013-05-21T09:37:14.470 に答える
0
private void initMediaRecorder()
           {
               mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
               mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
               //File file=new File(Environment.getExternalStorageDirectory(), PlayPath);
               CamcorderProfile camcorderProfile_HQ =CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
               mediaRecorder.setProfile(camcorderProfile_HQ);
               mediaRecorder.setOutputFile("/sdcard/myvideo.mp4");
               **mediaRecorder.setOrientationHint(90);**
           }
于 2014-02-10T12:12:48.043 に答える