日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 中使用MediaRecorder进行录像详解(视频录制)

發(fā)布時(shí)間:2024/1/23 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 中使用MediaRecorder进行录像详解(视频录制) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡單的視頻錄制功能.

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:一個(gè)簡單的錄制視頻例子<BR>* PS:實(shí)現(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;// 顯示視頻的控件// 用來顯示視頻的一個(gè)接口,我靠不用還不行,也就是說用mediarecorder錄制視頻還得給個(gè)界面看// 想偷偷錄視頻的同學(xué)可以考慮別的辦法。。嗯需要實(shí)現(xiàn)這個(gè)接口的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è)置,要不出錯(cuò).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(相機(jī))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è)置編碼和格式的后面,否則報(bào)錯(cuò)mediarecorder.setVideoSize(176, 144);// 設(shè)置錄制的視頻幀率。必須放在設(shè)置編碼和格式的后面,否則報(bào)錯(cuò)mediarecorder.setVideoFrameRate(20);mediarecorder.setPreviewDisplay(surfaceHolder.getSurface());// 設(shè)置視頻文件輸出的路徑mediarecorder.setOutputFile("/sdcard/love.3gp");try {// 準(zhǔn)備錄制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,這個(gè)holder為開始在oncreat里面取得的holder,將它賦給surfaceHoldersurfaceHolder = holder;}@Overridepublic void surfaceCreated(SurfaceHolder holder) {// 將holder,這個(gè)holder為開始在oncreat里面取得的holder,將它賦給surfaceHoldersurfaceHolder = holder;}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// surfaceDestroyed的時(shí)候同時(shí)對象設(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

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.video"android:versionCode="1"android:versionName="1.0" ><applicationandroid:icon="@drawable/icon"android:label="@string/app_name" ><activityandroid:label="@string/app_name"android:name=".TestBasicVideo" ><intent-filter ><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><uses-sdk android:minSdkVersion="8" /><uses-permission android:name="android.permission.CAMERA" ></uses-permission><uses-permission android:name="android.permission.RECORD_AUDIO" ></uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission></manifest>

?

總結(jié)

以上是生活随笔為你收集整理的Android 中使用MediaRecorder进行录像详解(视频录制)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。