0
我想单击lyt时从相机开始录制视频,并在再次单击时停止录制。此代码使“myVideo.mp4”文件,但它不能播放。 也我不想显示任何预览。 任何人都可以帮助我?无预览录制视频
活动主营:
public class ActivityMain extends Activity {
MediaRecorder rec;
static Camera camera;
boolean isRecording = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout lyt = (LinearLayout) findViewById(R.id.lyt);
rec = new MediaRecorder();
lyt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (isRecording) {
// stop recording and release camera
Log.e("TEST", "befor stop");
rec.stop(); // stop the recording
Log.e("TEST", "stop");
releaseMediaRecorder(); // release the MediaRecorder object
camera.lock(); // take camera access back from MediaRecorder
// inform the user that recording has stopped
isRecording = false;
} else {
// initialize video camera
if (prepareVideoRecorder()) {
// Camera is available and unlocked, MediaRecorder is prepared,
// now you can start recording
Log.e("TEST", "befor start");
rec.start();
Log.e("TEST", "start");
// inform the user that recording has started
isRecording = true;
} else {
// prepare didn't work, release the camera
releaseMediaRecorder();
// inform user
}
}
}
});
// Intent intent = new Intent(ActivityMain.this, VideoCapture.class);
// startActivity(intent);
}
private void releaseMediaRecorder() {
if (rec != null) {
// rec.reset(); // clear recorder configuration
rec.release(); // release the recorder object
rec = null;
camera.lock(); // lock camera for later use
Log.e("TEST", "released");
}
}
/** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance() {
Camera c = null;
try {
c = Camera.open(); // attempt to get a Camera instance
}
catch (Exception e) {
Log.e("TEST", "Camera is not avalable : " + e);
}
return c; // returns null if camera is unavailable
}
private boolean prepareVideoRecorder() {
camera = getCameraInstance();
rec = new MediaRecorder();
// Step 1: Unlock and set camera to MediaRecorder
camera.unlock();
rec.setCamera(camera);
// Step 2: Set sources
rec.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
rec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
rec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
// Step 4: Set output file
rec.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath().toString() + "/" + "myVideo.mp4");
// Step 6: Prepare configured MediaRecorder
try {
rec.prepare();
}
catch (IllegalStateException e) {
Log.e("TEST", "IllegalStateException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
}
catch (IOException e) {
Log.e("TEST", "IOException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
}
return true;
}
}
相关:http://stackoverflow.com/questions/1252172/android - 如何到初始化-mediarecorder-没有一个有效表面换视频前雇主 – muratgu