6

私はソーシャルモバイルアプリに取り組んでいます。これは、プロファイルのビデオを記録するオプションがあります。私のレコーダーの問題は、それが実際のビデオを映し出すことです。私はそれがデフォルトの動作であることを知っていますが、それはsanpchatのように動作します。スナップショットのようにミラーなしでカメラからビデオを録画する

プレビュー

ここ

After recording and playback

が私のコードで記録・再生した後

Video when preview

// return camera instance when activity open first time 
private Camera getCameraInstance() { 
    // TODO Auto-generated method stub 
    releaseCamera(); 
    releaseMediaRecorder(); 
    Camera c = null; 
    try { 
     cameraId = findFrontFacingCamera(); 
     if (cameraId < 0) { 
      cameraId = findBackFacingCamera(); 
     } 
     c = Camera.open(cameraId); 

     // setCameraDisplayOrientation(this,cameraId,c); 
     //setCameraDisplayOrientation(this, cameraId, c); 
     c.setDisplayOrientation(90); 
    } catch (Exception e) { 
     // Camera is not available (in use or does not exist) 
    } 
    return c; // returns null if camera is unavailable 
} 
// return __cameraPreview Id 1 to open front camera 
private int findFrontFacingCamera() { 
    int cameraId = -1; 
    // Search for the front facing camera 
    int numberOfCameras = Camera.getNumberOfCameras(); 
    for (int i = 0; i < numberOfCameras; i++) { 
     Camera.CameraInfo info = new Camera.CameraInfo(); 
     Camera.getCameraInfo(i, info); 
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
      cameraId = i; 
      setOrientationHint = 270 ; 
      cameraFront = true; 
      break; 
     } 
    } 
    return cameraId; 
} 
// prepare and start recording 
private boolean prepareMediaRecorder() { 
    mediaRecorder = new MediaRecorder(); 
    try { 
     myCamera.unlock(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    mediaRecorder.setCamera(myCamera); 

    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
    //mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 

    if (cameraPreview.getVideoSize() != null) { 
     mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     mediaRecorder.setOutputFile(saveUrl); 

     mediaRecorder.setVideoEncodingBitRate(10000000); 
     mediaRecorder.setVideoFrameRate(30); 
     mediaRecorder.setVideoSize(cameraPreview.getVideoSize().width, cameraPreview.getVideoSize().height); 

     mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
     mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
    } else { 
     CamcorderProfile cp = CamcorderProfile.get(cameraId, CamcorderProfile.QUALITY_HIGH); 
     mediaRecorder.setProfile(cp); 
    } 
    Log.e(TAG, "Video profile CamcorderProfile.QUALITY_HIGH: " + "cp.quality:" + cp.quality 
      + ", cp.videoFrameWidth:" + cp.videoFrameWidth 
      + ", cp.videoFrameHeight:" + cp.videoFrameHeight); 

    mediaRecorder.setMaxDuration(MAX_VIDEO_LENGTH); 
    mediaRecorder.setOrientationHint(setOrientationHint); 
    try { 
     mediaRecorder.prepare(); 

    } catch (IllegalStateException | IOException e) { 
     e.printStackTrace(); 
     releaseMediaRecorder(); 
     return false; 
    } 
    mediaRecorder.start(); 
    return true; 
} 

再生時のプレビューと同じにする必要があります。 Sanpchatはすでに同じことをしています、事前に感謝します。

+0

「cameraPreview」とは何ですか? – pskink

+0

のサブクラス 'SurfaceView' – Max

+0

' TextureView'と 'setTransform(Matrix transform)'を使用します – pskink

答えて

1

最終的に私はビデオを提出するAPI側でそれを行う必要はありません。ビデオをアップロードした後、垂直方向にffmpegを使用し、メタデータに角度を設定します。ここにこれのためのコマンドがあります。

ffmpeg -i VIDEO_PATH -vf "vflip" -metadata:s:v rotate=180 DEST_PATH 
+0

お返事ありがとうございます。私は本当にこの問題に固執しています。私はビデオを反転する方法を見つけませんでした –

+0

@マックスビデオフリップのこのコマンドを使用する方法? – Arti

2

あなたはここに270にフロントに面したカメラの方向を設定しているTextureView、ドキュメントhereを使用すると、X軸上の-1のスケール変換関数here

+0

これは間違いありませんが、リンクのみの回答は[良い例とは考えられません](http://meta.stackexchange.com/questions/7515/why-is-linking-bad)on Stack Overflow。 「答え」という質問には、実際には回答が含まれているか、少なくとも内容の要約とそれが質問にどのように関係しているかが含まれていなければなりません。 –

+0

申し訳ありませんが、リンクにはわかりやすいコードが含まれているので正しいと思いました。 –

+0

プレビューが変更され、録画されたビデオも変更されますか? – Max

3

を適用することができ、

setOrientationHint = 270 ; 

代わりに、私はこれも変更されます

setOrientationHint = (info.orientation - 180 + 360) % 360; 

、以下のように180度に向きを設定することをお勧めビデオファイル全体。

関連する問題