Android 中使用MediaRecorder进行录像详解(视频录制)
生活随笔
收集整理的這篇文章主要介紹了
Android 中使用MediaRecorder进行录像详解(视频录制)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
簡單的視頻錄制功能.
package com.video;import java.io.IOException;import android.app.Activity; import android.content.pm.ActivityInfo; import android.graphics.PixelFormat; import android.media.MediaRecorder; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.widget.Button;/*** class name:TestBasicVideo<BR>* class description:一個簡單的錄制視頻例子<BR>* PS:實現(xiàn)基本的錄制保存文件 <BR>* * @version 1.00 2011/09/21* @author CODYY)peijiangping*/ public class TestBasicVideo extends Activity implements SurfaceHolder.Callback {private Button start;// 開始錄制按鈕private Button stop;// 停止錄制按鈕private MediaRecorder mediarecorder;// 錄制視頻的類private SurfaceView surfaceview;// 顯示視頻的控件// 用來顯示視頻的一個接口,我靠不用還不行,也就是說用mediarecorder錄制視頻還得給個界面看// 想偷偷錄視頻的同學(xué)可以考慮別的辦法。。嗯需要實現(xiàn)這個接口的Callback接口private SurfaceHolder surfaceHolder;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉標(biāo)題欄getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);// 設(shè)置全屏// 設(shè)置橫屏顯示setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 選擇支持半透明模式,在有surfaceview的activity中使用。getWindow().setFormat(PixelFormat.TRANSLUCENT);setContentView(R.layout.main);init();}private void init() {start = (Button) this.findViewById(R.id.start);stop = (Button) this.findViewById(R.id.stop);start.setOnClickListener(new TestVideoListener());stop.setOnClickListener(new TestVideoListener());surfaceview = (SurfaceView) this.findViewById(R.id.surfaceview);SurfaceHolder holder = surfaceview.getHolder();// 取得holderholder.addCallback(this); // holder加入回調(diào)接口// setType必須設(shè)置,要不出錯.holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);}class TestVideoListener implements OnClickListener {@Overridepublic void onClick(View v) {if (v == start) {mediarecorder = new MediaRecorder();// 創(chuàng)建mediarecorder對象// 設(shè)置錄制視頻源為Camera(相機)mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);// 設(shè)置錄制完成后視頻的封裝格式THREE_GPP為3gp.MPEG_4為mp4mediarecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);// 設(shè)置錄制的視頻編碼h263 h264mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);// 設(shè)置視頻錄制的分辨率。必須放在設(shè)置編碼和格式的后面,否則報錯mediarecorder.setVideoSize(176, 144);// 設(shè)置錄制的視頻幀率。必須放在設(shè)置編碼和格式的后面,否則報錯mediarecorder.setVideoFrameRate(20);mediarecorder.setPreviewDisplay(surfaceHolder.getSurface());// 設(shè)置視頻文件輸出的路徑mediarecorder.setOutputFile("/sdcard/love.3gp");try {// 準備錄制mediarecorder.prepare();// 開始錄制mediarecorder.start();} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (v == stop) {if (mediarecorder != null) {// 停止錄制mediarecorder.stop();// 釋放資源mediarecorder.release();mediarecorder = null;}}}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {// 將holder,這個holder為開始在oncreat里面取得的holder,將它賦給surfaceHoldersurfaceHolder = holder;}@Overridepublic void surfaceCreated(SurfaceHolder holder) {// 將holder,這個holder為開始在oncreat里面取得的holder,將它賦給surfaceHoldersurfaceHolder = holder;}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// surfaceDestroyed的時候同時對象設(shè)置為nullsurfaceview = 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" ><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="1" ><SurfaceViewandroid:id="@+id/surfaceview"android:layout_width="fill_parent"android:layout_height="fill_parent" /></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="4"android:gravity="center"android:orientation="vertical" ><Buttonandroid:id="@+id/start"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="Start" /><Buttonandroid:id="@+id/stop"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="Stop" /></LinearLayout></LinearLayout>AndroidManifest.xml
?
總結(jié)
以上是生活随笔為你收集整理的Android 中使用MediaRecorder进行录像详解(视频录制)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用Java实现串口全双工通讯
- 下一篇: Android中的多种文件读写操作方法