zoukankan      html  css  js  c++  java
  • 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;
    
    @Override
    public 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);//输出格式为3gp
      recorder.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 Pro] 小心ReleaseByteArrayElements 中的参数问题
    [Android Pro] linux下查看一个文件的属性(ls,lsattr,file,stat)
    [Android Pro] root用户删除文件提示:Operation not permitted
    [Android Pro] adb 进入 recovery, adb 进入 bootloader
    [Android Pro] Android API 23中废弃了HttpClient的解决办法
    [Android Rro] SDK JAR
    [Android Pro] Android下toolbox简介
    [Android Pro] static 和 Volatile 的区别
    [Android Pro] DES加密 version1
    [Android Pro] AES加密
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4195065.html
Copyright © 2011-2022 走看看