Android使用MediaRecorder和Camera实现视频录制及播放功能整理

转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51878566
这两天产品经理向我丢来一个新需求,需要在项目里添加一个视频录制的功能,正好是我没做过的,于是研究了一番。在网上搜索了一些案例,但是都是不完整的,要不就是分辨率有问题的,要不就是声音有问题的,要不就是实现了视频录制但是没有播放功能的,所以我就想自己做一个,整合一下,来个较完整版的。
PM的要求如下:实现录像功能,录完后可以预览播放,视频清晰并且大小不能大,支持删除视频功能……
好吧,开始干活了,首先来分析一下原理,现在安卓手机实现录像的功能无非就两种方式,第一是实用系统自带的照相机/摄像机进行录制,然后通过回调的方式将源返回,例如:
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);//设置视频录制的最长时间intent.putExtra (MediaStore.EXTRA_DURATION_LIMIT,30);//设置视频录制的画质intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);startActivityForResult (intent, VIDEO_WITH_CAMERA);
1
2
3
4
5
6

回调如下所示:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { try{ if (resultCode == Activity.RESULT_OK && requestCode == VIDEO_WITH_CAMERA){ Uri uri = data.getData(); Log.e(TAG, "onActivityResult: " + uri.toString()); } }catch (Exception e){ e.printStackTrace(); }}
1
2
3
4
5
6
7
8
9
10
11

这种方式是直接调用手机的摄像功能,所以就和你打开相机摄像是一模一样的,但是这样就产生问题了,现在的手机摄像头像素越来越高,拍摄效果越来越清晰,很多都达到了720p甚至是1080p,这样短暂的10s时长内存占用就达到了20M,显然这样是不可能的,并且intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);这行代码,在设置EXTRA_VIDEO_QUALITY为1的情况下,视频格式保存为mp4,然而无论怎么修改EXTRA_VIDEO_QUALITY为0.几的时候,视频保存格式为3gp,并且视频录像效果很差,所以后来我放弃了这种方式而改用第二种方式。
第二种方法就是利用安卓自带的MediaRecorder来录制视频,并制定视频保存路径,并且可以通过Camera来播放录制的视频,下面我们来具体讲解一下这种实现的方式。
首先来看一下效果图吧,很粗糙的

Android使用MediaRecorder和Camera实现视频录制及播放功能整理_第1张图片
这里写图片描述

布局很简单,一个开始录制/停止录制按钮,一个播放按钮,一个录制时间计数器,布局文件代码如下:
activity_main.xml

你可能感兴趣的:(Android使用MediaRecorder和Camera实现视频录制及播放功能整理)