Я пытаюсь записать видео в прямом эфире, воспроизводимое vitamio videoView. прямо сейчас я использую MediaRecorded, но он просто не работает.
как мне это сделать? у меня есть эти 3 основных метода записи.
есть ли другой способ записи прямого эфира?
holder = mVideoView.getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
initRecorder();
}
});
private void initRecorder() {
if (recorder == null) recorder = new MediaRecorder();
recorder.setPreviewDisplay(holder.getSurface());
//recorder.setCamera(mCamera);
recorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
// mrecorder.setOutputFormat(8);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
recorder.setVideoEncodingBitRate(512 * 1000);
recorder.setVideoFrameRate(25);
recorder.setVideoSize(352, 288);
recorder.setOutputFile(Utils.getTuracoFolder() + "/video.mp4");
try {
recorder.prepare();
} catch (IllegalStateException e) {
// This is thrown if the previous calls are not called with the
// proper order
e.printStackTrace();
TLog.e(TAG, e.getMessage());
} catch (IOException e) {
e.printStackTrace();
TLog.e(TAG, e.getMessage());
}
}
private void toggleRecording() {
if (recorder == null) return;
if (recording) {
try {
recorder.stop();
recorder.reset();
initRecorder();
recording = false;
TLog.d(TAG, "Stopped Recording");
} catch (Exception ex) {
TLog.d(TAG, "Error - " + ex.getMessage());
}
} else {
try {
recorder.start();
} catch (IllegalStateException e) {
TLog.e(TAG, e.getMessage());
}
Log.v(TAG, "Recording Started");
recording = true;
}
}