zoukankan      html  css  js  c++  java
  • Android视频录制

     1 public class MainActivity extends Activity {
     2 
     3     private MediaRecorder videoRecorder=null;
     4     private Button recorder=null;
     5     private Button stop=null;
     6     private SurfaceView surface=null;
     7     @SuppressWarnings("deprecation")
     8     protected void onCreate(Bundle savedInstanceState) {
     9         super.onCreate(savedInstanceState);
    10         requestWindowFeature(Window.FEATURE_NO_TITLE);
    11         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    12         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置屏幕横向全屏显示
    13         setContentView(R.layout.main);
    14         videoRecorder=new MediaRecorder();
    15         surface=(SurfaceView) this.findViewById(R.id.surface);
    16         recorder=(Button) this.findViewById(R.id.recorder);
    17         stop=(Button) this.findViewById(R.id.stop);
    18         surface.getHolder().setKeepScreenOn(true);
    19         surface.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    20         surface.getHolder().setFixedSize(320, 240);
    21         
    22     }
    23     public void RecordVideo(View v)
    24     {
    25         switch (v.getId()) {
    26         case R.id.recorder:
    27             
    28             stop.setEnabled(true);
    29             recorder.setEnabled(false);
    30             try {
    31                 videoRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置音频的来源
    32                 videoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);    //设置视频的来源
    33                 videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置视频的输出格式3gp
    34                 videoRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);//设音频的解码方式
    35                 videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//设视频的解码方式
    36                 videoRecorder.setVideoFrameRate(5);//设置每秒捕获画面的个数
    37                 videoRecorder.setVideoSize(480, 320);//设置视频的大小
    38                 File f=new File(Environment.getExternalStorageDirectory().getAbsolutePath(),System.currentTimeMillis()+".3gp");
    39                 videoRecorder.setOutputFile(f.getAbsolutePath());//设置保存的路径
    40                 videoRecorder.setPreviewDisplay(surface.getHolder().getSurface());//吧捕获的画面显示到surfaceView控件中
    41                 videoRecorder.prepare();
    42                 videoRecorder.start();
    43             } catch (Exception e) {
    44                 // TODO Auto-generated catch block
    45                 e.printStackTrace();
    46             } 
    47             
    48             break;
    49         case R.id.stop:
    50             stop.setEnabled(false);
    51             recorder.setEnabled(true);
    52             if(videoRecorder!=null)
    53             {
    54                 videoRecorder.stop();
    55                 videoRecorder.release();
    56                 videoRecorder=null;
    57             }
    58             break;
    59         }
    60     }
    61     @Override
    62     public boolean onTouchEvent(MotionEvent event) {
    63         if(event.getAction()==MotionEvent.ACTION_DOWN)
    64         {
    65              this.findViewById(R.id.btnLayout).setVisibility(View.VISIBLE);
    66         }
    67         return super.onTouchEvent(event);
    68     }
    69 
    70     @Override
    71     public boolean onCreateOptionsMenu(Menu menu) {
    72         // Inflate the menu; this adds items to the action bar if it is present.
    73         getMenuInflater().inflate(R.menu.main, menu);
    74         return true;
    75     }
    76 
    77 }
    78 
    79 注意:activity设置好之后必须在Mainfest.xml文件中配置权限
    80     <uses-permission android:name="android.permission.CAMERA"/>
    81     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    82     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    83     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  • 相关阅读:
    next_permutation
    P1087 FBI树
    P4047 [JSOI2010]部落划分
    买礼物
    P2121 拆地毯
    Nebula Graph 在大规模数据量级下的实践和定制化开发
    深入了解kafka系列-消费者
    一分钟教你搭建WebRTC流媒体服务器Janus-gateway
    什么是"前端工程化"?
    斗鱼Juno 监控中心的设计与实现
  • 原文地址:https://www.cnblogs.com/tianshidechibang234/p/3198911.html
Copyright © 2011-2022 走看看