java中初始化MediaRecorder的實現(xiàn)方法
更新時間:2017年10月25日 10:48:39 作者:csguo007
這篇文章主要介紹了java中初始化MediaRecorder的實現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的功能,需要的朋友可以參考下
java中初始化MediaRecorder
實現(xiàn)代碼:
private boolean initializeVideo() {
Log.v(TAG, "initializeVideo");
if (mSurfaceHolder == null) {
Log.v(TAG, "SurfaceHolder is null");
return false;
}
mMediaRecorderRecording = true;
if (mMediaRecorder == null)
mMediaRecorder = new MediaRecorder();
else
mMediaRecorder.reset();
if (mCamera != null) {
if (Integer.parseInt(Build.VERSION.SDK) >= 8)
VideoCameraNew2.reconnect(mCamera);
mCamera.release();
mCamera = null;
}
if (useFront && Integer.parseInt(Build.VERSION.SDK) >= 5) {
if (isAvailableSprintFFC)
{
try
{
Method method = Class.forName("android.hardware.HtcFrontFacingCamera").getDeclaredMethod("getCamera", null);
mCamera = (Camera) method.invoke(null, null);
}
catch (Exception ex)
{
Log.d(TAG, ex.toString());
}
} else {
mCamera = Camera.open();
Camera.Parameters parameters = mCamera.getParameters();
parameters.set("camera-id", 2);
mCamera.setParameters(parameters);
}
VideoCameraNew.unlock(mCamera);
mMediaRecorder.setCamera(mCamera);
mVideoPreview.setOnClickListener(this);
}
mVideoPreview.setOnLongClickListener(this);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mMediaRecorder.setOutputFile(sender.getFileDescriptor());
mMediaRecorder.setVideoFrameRate(20);
if (videoQualityHigh) {
mMediaRecorder.setVideoSize(352,288);
} else {
mMediaRecorder.setVideoSize(176,144);
}
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
try {
mMediaRecorder.prepare();
mMediaRecorder.setOnErrorListener(this);
mMediaRecorder.start();
} catch (IOException exception) {
releaseMediaRecorder();
finish();
return false;
}
return true;
}
private boolean initializeVideo() {
Log.v(TAG, "initializeVideo");
if (mSurfaceHolder == null) {
Log.v(TAG, "SurfaceHolder is null");
return false;
}
mMediaRecorderRecording = true;
if (mMediaRecorder == null)
mMediaRecorder = new MediaRecorder();
else
mMediaRecorder.reset();
if (mCamera != null) {
if (Integer.parseInt(Build.VERSION.SDK) >= 8)
VideoCameraNew2.reconnect(mCamera);
mCamera.release();
mCamera = null;
}
if (useFront && Integer.parseInt(Build.VERSION.SDK) >= 5) {
if (isAvailableSprintFFC)
{
try
{
Method method = Class.forName("android.hardware.HtcFrontFacingCamera").getDeclaredMethod("getCamera", null);
mCamera = (Camera) method.invoke(null, null);
}
catch (Exception ex)
{
Log.d(TAG, ex.toString());
}
} else {
mCamera = Camera.open();
Camera.Parameters parameters = mCamera.getParameters();
parameters.set("camera-id", 2);
mCamera.setParameters(parameters);
}
VideoCameraNew.unlock(mCamera);
mMediaRecorder.setCamera(mCamera);
mVideoPreview.setOnClickListener(this);
}
mVideoPreview.setOnLongClickListener(this);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mMediaRecorder.setOutputFile(sender.getFileDescriptor());
mMediaRecorder.setVideoFrameRate(20);
if (videoQualityHigh) {
mMediaRecorder.setVideoSize(352,288);
} else {
mMediaRecorder.setVideoSize(176,144);
}
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
try {
mMediaRecorder.prepare();
mMediaRecorder.setOnErrorListener(this);
mMediaRecorder.start();
} catch (IOException exception) {
releaseMediaRecorder();
finish();
return false;
}
return true;
}
private void releaseMediaRecorder() {
Log.v(TAG, "Releasing media recorder.");
if (mMediaRecorder != null) {
mMediaRecorder.reset();
if (mCamera != null) {
if (Integer.parseInt(Build.VERSION.SDK) >= 8)
VideoCameraNew2.reconnect(mCamera);
mCamera.release();
mCamera = null;
}
mMediaRecorder.release();
mMediaRecorder = null;
}
}
public void onError(MediaRecorder mr, int what, int extra) {
if (what == MediaRecorder.MEDIA_RECORDER_ERROR_UNKNOWN) {
finish();
}
}
private void releaseMediaRecorder() {
Log.v(TAG, "Releasing media recorder.");
if (mMediaRecorder != null) {
mMediaRecorder.reset();
if (mCamera != null) {
if (Integer.parseInt(Build.VERSION.SDK) >= 8)
VideoCameraNew2.reconnect(mCamera);
mCamera.release();
mCamera = null;
}
mMediaRecorder.release();
mMediaRecorder = null;
}
}
public void onError(MediaRecorder mr, int what, int extra) {
if (what == MediaRecorder.MEDIA_RECORDER_ERROR_UNKNOWN) {
finish();
}
}
private void stopVideoRecording() {
Log.v(TAG, "stopVideoRecording");
if (mMediaRecorderRecording || mMediaRecorder != null) {
Receiver.listener_video = null;
t.interrupt();
RtpStreamSender.delay = 0;
if (mMediaRecorderRecording && mMediaRecorder != null) {
try {
mMediaRecorder.setOnErrorListener(null);
mMediaRecorder.setOnInfoListener(null);
mMediaRecorder.stop();
} catch (RuntimeException e) {
Log.e(TAG, "stop fail: " + e.getMessage());
}
mMediaRecorderRecording = false;
}
releaseMediaRecorder();
}
}
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Spring整合Quartz Job以及Spring Task的實現(xiàn)方法
下面小編就為大家分享一篇Spring整合Quartz Job以及Spring Task的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
Java異常處理之try...catch...語句的使用進(jìn)階
這篇文章主要介紹了Java異常處理之try...catch...語句的使用進(jìn)階,重點在于牽扯相關(guān)IO使用時的資源調(diào)配情況,需要的朋友可以參考下2015-11-11
Java設(shè)計模式之解釋器模式(Interpreter模式)介紹
這篇文章主要介紹了Java設(shè)計模式之解釋器模式(Interpreter模式)介紹,Interpreter定義:定義語言的文法,并且建立一個解釋器來解釋該語言中的句子,需要的朋友可以參考下2015-03-03
Java序列化框架Kryo高效轉(zhuǎn)換對象為字節(jié)流面試精講
這篇文章主要為大家介紹了Java序列化框架Kryo高效轉(zhuǎn)換對象為字節(jié)流面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Java?多線程并發(fā)編程提高數(shù)據(jù)處理效率的詳細(xì)過程
這篇文章主要介紹了Java?多線程并發(fā)編程提高數(shù)據(jù)處理效率,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04

