MediaRecoder

xiaoxiao2021-02-28  114

private Button mBtnStartRecoder; private Button mBtnStopRecoder; private SurfaceView mSurfaceView; private MediaRecorder mMediaRecorder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtnStartRecoder = (Button) findViewById(R.id.btn_startRecoder); mBtnStopRecoder = (Button) findViewById(R.id.btn_stopRecoder); mSurfaceView = (SurfaceView) findViewById(R.id.sf); // 设置不维护缓冲区 mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mSurfaceView.getHolder().setFixedSize(320, 280); //保持屏幕唤醒 mSurfaceView.getHolder().setKeepScreenOn(true); mMediaRecorder = new MediaRecorder(); mMediaRecorder.reset(); //1.设置采集声音 mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置采集图像 mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); //2.设置视频,音频的输出格式 mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //3.设置音频的编码格式 mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); //设置图像的编码格式 mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); //设置立体声 mMediaRecorder.setAudioChannels(2); //设置最大录像时间 单位:毫秒 mMediaRecorder.setMaxDuration(600000); //设置最大录制的大小 单位,字节 mMediaRecorder.setMaxFileSize(1024*1024); //音频一秒钟包含多少数据位 mMediaRecorder.setAudioEncodingBitRate(128); //设置选择角度,顺时针方向,因为默认是逆向90度的,这样图像就是正常显示了,这里设置的是观看保存后的视频的角度 mMediaRecorder.setOrientationHint(90); //设置录像的分辨率 //mMediaRecorder.setVideoSize(176, 144); File saveFile = new File(Environment.getExternalStorageDirectory(),"myvideo.mp4"); mMediaRecorder.setOutputFile(saveFile.getAbsolutePath()); mMediaRecorder.setPreviewDisplay(mSurfaceView.getHolder().getSurface()); /** * 开始录制 */ mBtnStartRecoder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { mMediaRecorder.prepare(); //开始录制 mMediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); } } }); /** * 结束录制 */ mBtnStopRecoder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //停止录制 mMediaRecorder.stop(); //释放资源 mMediaRecorder.release(); mMediaRecorder = null; } }); } <SurfaceView android:id="@+id/sf" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <Button android:id="@+id/btn_startRecoder" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="开始录制"/> <Button android:id="@+id/btn_stopRecoder" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="结束录制"/>

转载请注明原文地址: https://www.6miu.com/read-49672.html

最新回复(0)