java中初始化MediaRecorder的实现方法
作者:csguo007 时间:2023-11-29 03:54:52
java中初始化MediaRecorder
实现代码:
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();
}
}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/zhyooo123/article/details/6750061
标签:java,MediaRecorder
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Spring Boot Reactor 整合 Resilience4j详析
2021-08-08 10:30:02
![](https://img.aspxhome.com/file/2023/2/62362_0s.png)
SpringBoot实现项目健康检查与监控
2023-10-28 19:14:25
AndroidStudio替换项目图标ic_launcher操作
2023-03-20 09:48:07
![](https://img.aspxhome.com/file/2023/1/122061_0s.jpg)
Android自定义viewGroup实现点击动画效果
2022-09-01 00:27:07
Java中的stream流的概念解析及实际运用总结
2022-06-10 23:19:10
![](https://img.aspxhome.com/file/2023/8/69288_0s.png)
java网络编程基础知识介绍
2023-01-10 20:37:44
![](https://img.aspxhome.com/file/2023/7/77987_0s.jpg)
java Matcher匹配头尾截取替换字符串的案例
2023-01-30 11:44:48
Flutter实现顶部导航栏功能
2023-03-10 17:13:48
![](https://img.aspxhome.com/file/2023/2/130442_0s.jpg)
java实现大文件分割与合并的实例代码
2023-11-11 04:31:21
C#版Tesseract库的使用技巧
2023-01-24 20:07:53
![](https://img.aspxhome.com/file/2023/0/108730_0s.png)
Java 中的抽象介绍
2023-03-27 06:10:20
Spring gateway + Oauth2实现单点登录及详细配置
2022-12-19 00:16:49
![](https://img.aspxhome.com/file/2023/2/70942_0s.png)
c#之利用API函数实现动画窗体的方法详解
2022-12-07 04:43:24
Java毕业设计实战之生活旅行分享平台的实现
2022-02-01 02:42:18
![](https://img.aspxhome.com/file/2023/9/72519_0s.jpg)
c++虚函数与虚函数表原理
2023-12-09 07:22:45
![](https://img.aspxhome.com/file/2023/6/117756_0s.png)
Android读写文件工具类详解
2021-10-08 18:08:12
一篇看懂Java中的Unsafe类
2022-02-13 04:02:38
简单实现Android弹出菜单效果
2023-01-11 18:58:46
![](https://img.aspxhome.com/file/2023/0/95010_0s.jpg)
IntelliJ IDEA 安装目录的核心文件的功能及用法
2023-02-02 10:46:59
![](https://img.aspxhome.com/file/2023/9/85519_0s.png)
Android嵌套RecyclerView左右滑动替代自定义view
2023-03-27 14:51:17
![](https://img.aspxhome.com/file/2023/9/89549_0s.gif)