书到用时方恨少,事非经过不知难。这篇文章主要讲述Android 录制视频相关的知识,希望能为你提供帮助。
【Android 录制视频】Activity代码:
文章图片
package eoe.demo.Media; import java.io.File; import java.io.IOException; import android.app.Activity; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class VideoActivity extends Activity {private File myRecAudioFile; private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; private Button buttonStart; private Button buttonStop; private File dir; private MediaRecorder recorder; @Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.video); mSurfaceView = (SurfaceView) findViewById(R.id.videoView); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); buttonStart=(Button)findViewById(R.id.start); buttonStop=(Button)findViewById(R.id.stop); File defaultDir = Environment.getExternalStorageDirectory(); String path = defaultDir.getAbsolutePath()+File.separator+"V"+File.separator; //创建文件夹存放视频dir = new File(path); if(!dir.exists()){ dir.mkdir(); } recorder = new MediaRecorder(); buttonStart.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { recorder(); } }); buttonStop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { recorder.stop(); recorder.reset(); recorder.release(); recorder=null; } }); }public void recorder() {try { myRecAudioFile = File.createTempFile("video", ".3gp",dir); //创建临时文件recorder.setPreviewDisplay(mSurfaceHolder.getSurface()); //预览recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //视频源recorder.setAudiosource(MediaRecorder.AudioSource.MIC); //录音源为麦克风recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //输出格式为3gprecorder.setVideoSize(800, 480); //视频尺寸recorder.setVideoFrameRate(15); //视频帧频率recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //视频编码recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //音频编码recorder.setMaxDuration(10000); //最大期限recorder.setOutputFile(myRecAudioFile.getAbsolutePath()); //保存路径recorder.prepare(); recorder.start(); } catch (IOException e) { e.printStackTrace(); } } }
文章图片
布局代码:
文章图片
< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> < SurfaceView android:id="@+id/videoView" android:visibility="visible" android:layout_width="320px" android:layout_height="240px"> < /SurfaceView> < RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> < Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="录制" android:id="@+id/start"/> < Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/start" android:text="停止" android:id="@+id/stop"/> < /RelativeLayout> < /LinearLayout>
文章图片
AndroidManifest.xml:
文章图片
< !-- 授予该程序录制声音的权限 --> < uses-permission android:name="android.permission.RECORD_AUDIO"/> < !-- 授予该程序使用摄像头的权限 --> < uses-permission android:name="android.permission.CAMERA"/> < uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> < !-- 授予使用外部存储器的权限 --> < uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
文章图片
推荐阅读
- Android开发笔记——调用子Activity
- 笔记与Android酱的第一周
- androidannotations的background和UiThread配合使用參考
- 数据挖掘之套袋与助推
- HITRUST认证与HIPAA有什么区别(有哪些不同?)
- 锁定黑客的20个最佳WordPress安全插件合集介绍
- 专业人士使用的17种最佳安全渗透测试工具合集
- 17个最佳漏洞评估扫描工具合集(哪个更好())
- Windows和Linux服务器差异比较比较(哪个更好())