java中初始化MediaRecorder的實(shí)現(xiàn)方法
java中初始化MediaRecorder
實(shí)現(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)文章
Java如何根據(jù)不同系統(tǒng)動態(tài)獲取換行符和盤分割符
這篇文章主要介紹了Java如何根據(jù)不同系統(tǒng)動態(tài)獲取換行符和盤分割符,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
java之static關(guān)鍵字用法實(shí)例解析
這篇文章主要介紹了java之static關(guān)鍵字用法實(shí)例解析,包括了static關(guān)鍵字的原理講解及用法分析,并附帶了實(shí)例說明,需要的朋友可以參考下2014-09-09
kafka啟動報(bào)錯(cuò)(Cluster ID)不匹配問題以及解決
這篇文章主要介紹了kafka啟動報(bào)錯(cuò)(Cluster ID)不匹配問題以及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Java Web項(xiàng)目部署在Tomcat運(yùn)行出錯(cuò)與解決方法示例
這篇文章主要介紹了Java Web項(xiàng)目部署在Tomcat運(yùn)行出錯(cuò)與解決方法,結(jié)合具體實(shí)例形式分析了Java Web項(xiàng)目部署在Tomcat過程中由于xml配置文件導(dǎo)致的錯(cuò)誤問題常見提示與解決方法,需要的朋友可以參考下2017-03-03
mybatis中一對一關(guān)系association標(biāo)簽的使用
這篇文章主要介紹了mybatis中一對一關(guān)系association標(biāo)簽的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Mybatis中的config.xml配置文件詳細(xì)解析
這篇文章主要介紹了詳解Mybatis-config.xml配置文件,需要的朋友可以參考下2017-12-12
java實(shí)現(xiàn)ip地址與十進(jìn)制數(shù)相互轉(zhuǎn)換
本文介紹在java中IP地址轉(zhuǎn)換十進(jìn)制數(shù)及把10進(jìn)制再轉(zhuǎn)換成IP地址的方法及實(shí)例參考,曬出來和大家分享一下2012-12-12

