【发布时间】:2017-09-17 06:45:44
【问题描述】:
我目前正在尝试使用媒体记录器创建视频记录器。视频的方向逆时针旋转 90 度(基本上是横向模式)。我希望它能够在纵向视图中拍摄视频。
您可以从我的代码中看到,我并没有直接调用 Camera 变量来设置媒体记录器,因为它表明该代码已被弃用。谁能帮帮我。
我的代码如下:
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();
}
}
我已经查看了有关此的其他帖子,但它们似乎都已过时,因为许多过去使用的代码现在已被弃用。我希望有人可以提供帮助。
【问题讨论】:
标签: android android-mediarecorder