在这里给出自己的一个测试DEMO,里面注释很详细。简单的视频录制功能.
packagecom.demo;
importjava.io.IOException;
importandroid.app.Activity;
importandroid.content.pm.ActivityInfo;
importandroid.graphics.PixelFormat;
importandroid.media.MediaRecorder;
importandroid.os.Bundle;
importandroid.view.SurfaceHolder;
importandroid.view.SurfaceView;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.view.Window;
importandroid.view.WindowManager;
importandroid.widget.Button;
/**
*classname:TestBasicVideo<BR>
*classdescription:一个简单的录制视频例子<BR>
*PS:实现基本的录制保存文件<BR>
*
*@version1.002011/09/21
*@authorCODYY)peijiangping
*/
publicclassTestBasicVideoextendsActivityimplementsSurfaceHolder.Callback{
privateButtonstart;//开始录制按钮
privateButtonstop;//停止录制按钮
privateMediaRecordermediarecorder;//录制视频的类
privateSurfaceViewsurfaceview;//显示视频的控件
//用来显示视频的一个接口,我靠不用还不行,也就是说用mediarecorder录制视频还得给个界面看
//想偷偷录视频的同学可以考虑别的办法。。嗯需要实现这个接口的Callback接口
privateSurfaceHoldersurfaceHolder;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏
//设置横屏显示
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//选择支持半透明模式,在有surfaceview的activity中使用。
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);
init();
}
privatevoidinit(){
start=(Button)this.findViewById(R.id.start);
stop=(Button)this.findViewById(R.id.stop);
start.setOnClickListener(newTestVideoListener());
stop.setOnClickListener(newTestVideoListener());
surfaceview=(SurfaceView)this.findViewById(R.id.surfaceview);
SurfaceHolderholder=surfaceview.getHolder();//取得holder
holder.addCallback(this);//holder加入回调接口
//setType必须设置,要不出错.
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
classTestVideoListenerimplementsOnClickListener{
@Override
publicvoidonClick(Viewv){
if(v==start){
mediarecorder=newMediaRecorder();//创建mediarecorder对象
//设置录制视频源为Camera(相机)
mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//设置录制完成后视频的封装格式THREE_GPP为3gp.MPEG_4为mp4
mediarecorder
.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//设置录制的视频编码h263h264
mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
//设置视频录制的分辨率。必须放在设置编码和格式的后面,否则报错
mediarecorder.setVideoSize(176,144);
//设置录制的视频帧率。必须放在设置编码和格式的后面,否则报错
mediarecorder.setVideoFrameRate(20);
mediarecorder.setPreviewDisplay(surfaceHolder.getSurface());
//设置视频文件输出的路径
mediarecorder.setOutputFile("/sdcard/love.3gp");
try{
//准备录制
mediarecorder.prepare();
//开始录制
mediarecorder.start();
}catch(IllegalStateExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
if(v==stop){
if(mediarecorder!=null){
//停止录制
mediarecorder.stop();
//释放资源
mediarecorder.release();
mediarecorder=null;
}
}
}
}
@Override
publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,
intheight){
//将holder,这个holder为开始在oncreat里面取得的holder,将它赋给surfaceHolder
surfaceHolder=holder;
}
@Override
publicvoidsurfaceCreated(SurfaceHolderholder){
//将holder,这个holder为开始在oncreat里面取得的holder,将它赋给surfaceHolder
surfaceHolder=holder;
}
@Override
publicvoidsurfaceDestroyed(SurfaceHolderholder){
//surfaceDestroyed的时候同时对象设置为null
surfaceview=null;
surfaceHolder=null;
mediarecorder=null;
}
}
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" >
<SurfaceView
android:id="@+id/surfaceview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="4"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/start"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Start" />
<Button
android:id="@+id/stop"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Stop" />
</LinearLayout>
</LinearLayout>
AndroidManifest.xml
<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.demo"
android:versionCode="1"
android:versionName="1.0">
<uses-sdkandroid:minSdkVersion="8"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activityandroid:name=".TestBasicVideo">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<uses-permissionandroid:name="android.permission.CAMERA">
</uses-permission>
<uses-permissionandroid:name="android.permission.RECORD_AUDIO">
</uses-permission>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>
</manifest>
分享到:
相关推荐
Android中使用MediaRecorder进行录像详解(视频录制)_IT168文库.pdf 文档的类型是pdf的。不能复制。
使用MediaRecorder实现视频录制,以实现的功能包括:录制开始、录制暂停和计时,播放功能暂时没有,以后如果有机会补上。注意除了在AndroidManifest.xml文件中申请权限外,还需要手动开启存储和相机权限,否则真机...
Android中通过MediaRecorder录音录像,详细参见博客:http://www.cnblogs.com/plokmju/p/android_MediaRecorder.html
android下实现用mediarecorder录制视频,保存在本地,并通过socket发送
由官方配图可知,MediaRecorder用于录制视频时需要调用一系列的API来设置和录制相关的配置,而且调用方法的顺序是固定的,必须按照这个顺序进行API调用才能正确利用手机摄像头实现录像功能。 调用MediaRecorder的...
Android 使用MediaRecorder录像源码
Android 6.0之后使用MediaRecorder+Camera实现录制视频的Demo,注释详细阐述了一些使用上的注意点。例如在调用start()方法之前需要解锁摄像头、初始化摄像头部分机型存在摄像头反转问题的处理。
Android MediaRecorder 添加一个系统服务后台自动录视频
Android MediaRecorder 添加一个系统服务后台自动录视频,该服务能自动循环录取视频,可分多个视频文件录制,当空间不足时,会先删除一个最早录制到视频后在循环录制视频
为了在Android应用中录制音频,Android提供了MediaRecorder类,使用MediaRecorder录制音频的过程很简单,步骤如下: Step1:创建MediaRecorder对象; Step2:调用MediaRecorder对象的setAudioSource()方法设置声音...
android 视频分段录制,分段删除,最后合成一个mp4分件。使用的技术为MediaRecorder和mp4parser。运行完美,只要稍作打磨即可商业化应用
MediaRecorder视频录制视频录制,后台视频录制源码,在AndroidStudio 下运行 视频录制,后台视
利用MediaRecorder+Camera2框架实现基本的录像功能,当APP启动时自动打开摄像头,点击按钮开始录像,点击按钮停止录像并将录制的视频文件保存在sdcard/my_video/中
视频录制,后台视频录制源码,在AndroidStudio 下运行
主要介绍了Android使用MediaRecorder类进行录制视频的相关资料,需要的朋友可以参考下
Android应用使用MediaRecorder类录制视频的例子代码
使用MediaRecorder实现在录制视频并压缩解码。
Android SurfaceView+MediaRecorder实现的录音波浪图
一个简易的Android视频录制demo,基于MediaRecorder开发,支持参数设置,视频文件编辑及播放,内容比较丰富