2010-10-10 18 views

Odpowiedz

16

aby uzyskać więcej informacji, patrz Camera.Parameters.setRotation().

Jest tam przykład i zamiast wywoływać setRotation (obrót) spróbuj wywołać mediaRecorder.setOrientationHint (obrót) podczas nagrywania wideo.

+7

'mediaRecorder.setOrientationHint' zmienia tylko orientację wyjściowego wideo, a nie orientację podglądu. – Cat

+3

Ponadto, 'setOrientationHint' działa tylko dla strumieni MPEG4. Inne (takie jak MPEG2TS) nie implementują tej opcji (zostaje ona cicho zignorowana). – Lekensteyn

+0

@Czy masz rację, jakiś pomysł, jak to naprawić na podglądzie? !! –

6

Spójrz na dokumentacji tutaj

http://developer.android.com/guide/topics/media/camera.html#capture-video

Najczęstszym pułapka z tego przykładu jest setCamera(). MUSISZ USTAWIĆ KAMERĘ NATYCHMIAST PO URUCHOMIENIU MediaRecorder, w przeciwnym razie dostaniesz błędy.

Camera mCamera = getCameraInstance(); 
    // adjust the camera the way you need 
    mCamera.setDisplayOrientation(90); 

    MediaRecorder recorder = new MediaRecorder(); 

    recorder.setCamera(mCamera); 

    recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
    recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
    recorder.setOutputFile(filePath); 

    // add any limits 
    recorder.setMaxDuration(50000); // 50 seconds 
    recorder.setMaxFileSize(5000000); // Approximately 5 megabytes 

Mam nadzieję, że to pomoże komuś. Powodzenia!!

+1

ten kod zakończy się niepowodzeniem, BEZ funkcji "mCamera.unlock();" przed 'recorder.setCamera (mCamera)': http://developer.android.com/reference/android/hardware/Camera.html#unlock() – Cat

3

Również utknąłem z tym problemem. Zauważyłem, że możesz użyć funkcji setOrientationHint (API 9). Wywołaj tę funkcję, zanim zadzwonisz do MediaRecorder.prepare(). Możesz ustawić stopień orientacji wideo wyjściowego.

Mam nadzieję, że to pomoże, powodzenia!

+0

miło ... działa dobrze! dzięki! – Antonio

+2

w rzeczywistości nie obraca wideo w celu poprawienia orientacji, jest to tylko flaga ustawiona na wideo, którą niektórzy mediaplayerzy np. Ignorują vlc. – Nima

6

Dodaj następujące dwa wiersze kodu:

Camera.setDisplayOrientation(90); // use for set the orientation of the preview 
mRecorder.setOrientationHint(90); // use for set the orientation of output video 

przed:

mRecorder.setCamera(mCamera); 

Pełna przykład:

mRecorder = new MediaRecorder(); 

// Both are required for Portrait Video 
mCamera.setDisplayOrientation(90); 
mRecorder.setOrientationHint(90); 

// Step 1: Unlock and set camera to MediaRecorder 
mCamera.unlock(); 
mRecorder.setCamera(mCamera); 

// Step 2: Set sources 
mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
mRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 

// Step 3: Set a CamcorderProfile (requires API Level 8 or higher) 
mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_480P)); 
1
mMediaRecorder = new MediaRecorder(); 
     mServiceCamera.setDisplayOrientation(90); 
     mMediaRecorder.setOrientationHint(90); 
     mServiceCamera.unlock(); 
     mMediaRecorder.setCamera(mServiceCamera); 
     mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
     mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
Powiązane problemy