zoukankan      html  css  js  c++  java
  • 刻录视频

    public class MainActivity extends Activity {
        private SurfaceView surfaceView;
        private RelativeLayout layout;
        private Button recordbutton;
        private Button stopbutton;
        private MediaRecorder mediaRecorder;
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);//设置窗口特性没有标题
            //设置窗口全屏
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.main);
            
            surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
            //设置对数据不用缓存直接输出到SurfaceView上
            surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
            //设置屏幕大小
            surfaceView.getHolder().setFixedSize(176, 144);
            //设置屏幕常亮
            surfaceView.getHolder().setKeepScreenOn(true);
            
            layout = (RelativeLayout) this.findViewById(R.id.layout);
            recordbutton = (Button) this.findViewById(R.id.recordbutton);
            stopbutton = (Button) this.findViewById(R.id.stopbutton);
        }
    
        @Override
            //处理屏幕触摸事件
        public boolean onTouchEvent(MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN){
                layout.setVisibility(ViewGroup.VISIBLE);
            }
            return super.onTouchEvent(event);
        }
        //刻录方法
        public void record(View v){
            switch (v.getId()) {
            case R.id.recordbutton:
                try{
                    File videoFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+ ".3gp");
                    mediaRecorder = new MediaRecorder();//创建刻录对象
                    //设置音频来源
                    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                    //设置视频来源
                    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
                    //设置文件输出格式
                    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                    //设置视频大小
                    mediaRecorder.setVideoSize(320, 240);
                    //设置每秒多少张
                    mediaRecorder.setVideoFrameRate(5);
                    //设置音频编码
                    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                    //设置视频编码
                    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
                    //设置文件输出方向
                    mediaRecorder.setOutputFile(videoFile.getAbsolutePath());
                    //设置预览到那块
                    mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
                    //开始准备
                    mediaRecorder.prepare();
                    //开始刻录
                    mediaRecorder.start();
                }catch (Exception e) {
                    e.printStackTrace();
                }
                recordbutton.setEnabled(false);
                stopbutton.setEnabled(true);
                break;
    
            case R.id.stopbutton:
                if(mediaRecorder!=null){
                    //结束刻录
                    mediaRecorder.stop();
                    //释放资源
                    mediaRecorder.release();
                    mediaRecorder = null;
                }
                recordbutton.setEnabled(true);
                stopbutton.setEnabled(false);
                break;
            }
        }
    }
  • 相关阅读:
    C#中ref和out的原理
    C#托管堆和垃圾回收(GC)
    C#类成员初始化顺序
    HTTP认证之摘要认证——Digest(二)
    HTTP认证之摘要认证——Digest(一)
    设计模式之建造者模式——Builder
    Shader专题:卡通着色(一)控制颜色的艺术
    小班同学学习经历分享(一)游戏程序员成长札记
    UniRx精讲(二):独立的 Update &UniRx 的基本语法格式
    UniRx精讲(一):UniRx简介&定时功能实现
  • 原文地址:https://www.cnblogs.com/heml/p/3516185.html
Copyright © 2011-2022 走看看