Android录制视频(三)
发布日期:2021-06-30 11:22:36
浏览次数:2
分类:技术文章
本文共 3687 字,大约阅读时间需要 12 分钟。
mainActivity如下:
package c.c;import java.io.File;import java.io.IOException;import android.app.Activity;import android.content.pm.ActivityInfo;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.view.Window;import android.view.WindowManager;import android.widget.Button;/** * Demo描述: * 利用SurfaceView拍摄视频 * * 注意: * 1 严重注意:MediaRecorder参数的设置.因手机不同而有差异 * 2 在设置MediaRecorder的参数时,应先设置: * setVideoSource(),setAudioSource(),setOutputFormat(),setVideoEncoder(),setAudioEncoder * 然后再设置其余的参数,查看方法对应的API有提示 * */public class MainActivity extends Activity implements SurfaceHolder.Callback{ private Button mStartButton; private Button mStopButton; private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; private MediaRecorder mMediaRecorder; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 去掉标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 设置横屏显示 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setContentView(R.layout.main); init(); } private void init(){ mStartButton=(Button) findViewById(R.id.start_button); mStartButton.setOnClickListener(new ButtonClickListenerImpl()); mStopButton=(Button) findViewById(R.id.stop_button); mStopButton.setOnClickListener(new ButtonClickListenerImpl()); mSurfaceView=(SurfaceView) findViewById(R.id.surfaceView); mSurfaceHolder=mSurfaceView.getHolder(); mSurfaceHolder.addCallback(this); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } private void initMediaRecorder(){ mMediaRecorder=new MediaRecorder(); //设置视频源 mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); //设置音频源 mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); //设置文件输出格式 mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //设置视频编码方式 mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); //设置音频编码方式 mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); //设置视频高和宽,注意文档的说明: //Must be called after setVideoSource(). //Call this after setOutFormat() but before prepare(). //设置录制的视频帧率,注意文档的说明: //Must be called after setVideoSource(). //Call this after setOutFormat() but before prepare(). mMediaRecorder.setVideoFrameRate(20); //设置预览画面 mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); //设置输出路径 mMediaRecorder.setOutputFile (Environment.getExternalStorageDirectory()+File.separator+System.currentTimeMillis()+".mp4"); } private class ButtonClickListenerImpl implements OnClickListener{ public void onClick(View v) { if (v.getId()==R.id.start_button) { try { initMediaRecorder(); mMediaRecorder.prepare(); mMediaRecorder.start(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } if (v.getId()==R.id.stop_button) { if (mMediaRecorder!=null) { mMediaRecorder.stop(); mMediaRecorder.release(); mMediaRecorder=null; } } } } //SurfaceHolder.Callback接口 public void surfaceCreated(SurfaceHolder holder) { } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } public void surfaceDestroyed(SurfaceHolder holder) { } }main.xml如下:
转载地址:https://it9527.blog.csdn.net/article/details/8516106 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月19日 10时05分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
dos简单命令
2019-04-30
mysql的安装与卸载与Navicat远程连接
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30
2021-05-18
2019-04-30
Flutter 使用插件打开相册、相机
2019-04-30
libuv实现tcp代理服务器
2019-04-30
libuv使用不当导致的内存泄漏
2019-04-30
libuv实现ping包发送和接收
2019-04-30
linux-arm编译报错m4: unrecognized option ‘--gnu‘
2019-04-30
基础架构系列篇-系统CENTOS7安装jdk8
2019-04-30
基础架构系列篇-CENTOS7安装NGINX
2019-04-30
系统运维篇-常用的LINUX指令小计
2019-04-30
基础架构系列篇-系统centos7中安装mysql8.0.23(已更新)
2019-04-30
基础架构系列篇-系统centos7中DOCKER安装REDIS(已更新)
2019-04-30
基础架构系列篇-系统centos7安装docker+COMPOSE
2019-04-30
基础架构系列篇-系统centos7中docker安装rabbitmq
2019-04-30
基础架构系列篇-NGINX部署VUE
2019-04-30
个人电商项目,基于uni-app+ springcloud +VUE技术
2019-04-30
基础架构系列篇-系统centos7安装kafka
2019-04-30
基础架构系列篇-系统centos7中docker安装分布式文件存储服务minio
2019-04-30