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"/>
  • 相关阅读:
    Web开发人员必备工具-Emmet (Zen Coding)
    Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
    jquery 插件站
    数据挖掘项目之---通过对web日志的挖掘来实现内容推荐系统
    类似wordpress的网站模板
    浅谈 SOAP
    在Livemedia的基础上开发自己的流媒体客户端 V 0.01
    模式识别之分类器knn---c语言实现带训练数据---反余弦匹配
    多项式相乘快速算法原理及相应C代码实现---用到fft
    模式识别之基础---常用分类算法特性归纳
  • 原文地址:https://www.cnblogs.com/tianshidechibang234/p/3198911.html
Copyright © 2011-2022 走看看