0
現在、メディアレコーダーを使用してビデオレコーダーを作成しようとしています。ビデオの向きは、時計回りに90度回転して表示されます(基本的にランドスケープモード)。私はそれが肖像画の中でビデオを撮ることができるようにしたい。MediaRecorderがSurfaceViewを回転して画面の向きに合わせる
自分のコードから、カメラの変数がメディアレコーダーに直接セットされていないことがわかります。これは、コードが非推奨であることを示しているためです。誰でも助けてくれますか?
public void recordVideo()
{
isRecording = false;
mediaRecorder = new MediaRecorder();
initMediaRecorder();
//recorderView is my surfaceView//
surfaceHolder = recorderView.getHolder();
surfaceHolder.addCallback(surfaceCallback);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
toggleRecordButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
if(isRecording)
{
mediaRecorder.stop();
timer.cancel();
mediaRecorder.release();
toggleRecordButton.setText("START");
mediaRecorderLayout.setVisibility(View.GONE);
mPictureHelper.fetchCompressedUri(Environment.getExternalStorageDirectory().getPath()+"/myVideo.mp4");
}
else
{
seconds = 0;
mediaRecorder.start();
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run()
{
getActivity().runOnUiThread(new Runnable() {
@Override
public void run()
{
if (seconds < 10)
{
tvTimer.setText("00:0"+seconds);
}
else
{
tvTimer.setText("00:"+seconds);
}
seconds++;
}
});
}
},0,1000);
isRecording = true;
toggleRecordButton.setText("STOP");
}
}
});
}
private void initMediaRecorder()
{
String path = Environment.getExternalStorageDirectory().getPath()+"/myVideo.mp4";
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile camcorderProfile_HQ = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
mediaRecorder.setProfile(camcorderProfile_HQ);
mediaRecorder.setOutputFile(path);
mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
mediaRecorder.setMaxFileSize(10000000);
}
SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
prepareMediaRecorder();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
};
private void prepareMediaRecorder()
{
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
try
{
mediaRecorder.prepare();
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
を次のように私のコードは、私がこれについての他の記事をチェックアウトしたが、それらはすべて、使用されることに使用されるコードの多くが廃止されているという事実に時代遅れに見えます。私は誰かが助けることを望む。おかげ
でこれを追加それは表面図の肖像画になりますが、撮影した動画はまだ – Janwilx72
ここを見て回転させたまま。可能性があります:http://stackoverflow.com/questions/30349897/android-video-orientation-changes-on-mediarecorder-start – Lcukerd