总结android音频视频操作 (java层代码)
16lz
2022-08-02
播放音乐和视频用的是类:MediaPlayer
刻录声音和视频用的是类:MediaRecorder
拍照:Camera
没什么难度,都是调用android的API
1.刻录视频,关键代码如下:
- MediaRecordermediaRecorder=newMediaRecorder();
- mediaRecorder.reset();//首先重置一下
- mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//从照相机种采集视频
- mediaRecorder.setVideoSource(MediaRecorder.AudioSource.MIC);//从麦克风中采集声音
- mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//输出格式3GP
- mediaRecorder.setVideoSize(350,240);//视频文件大小
- mediaRecorder.setVideoFrameRate(3);//录制帧数,每秒3帧
- mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//设置视频编码方式
- mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置声音编码方式
- /*设置保存路径为sd卡根目录*/
- FilevideoFile=newFile(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");
- mediaRecorder.setOutputFile(videoFile.getAbsolutePath());
- mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());//定义一个SurfaceView来显示画面
- mediaRecorder.prepare();//此处要捕捉异常,底层调用硬件实现准备工作
- mediaRecorder.start();
- //停止
- mediaRecorder.stop();
- mediaRecorder.release();
- mediaRecorder=null;
2.刻录声音,关键代码如下:
Java代码- //与录制视频很相似
- mRecorder=newMediaRecorder();
- mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//声音来源麦克风
- mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//输出格式
- mRecorder.setOutputFile(mFileName);//可以自己给定保存文件
- mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//编码方式
- mRecorder.prepare();
- mRecorder.start();
3.播放声音,关键代码如下:
Java代码- MediaPlayermPlayer=newMediaPlayer();
- mPlayer.reset
- mPlayer.setDataSource(mFileName);//设置播放的声音文件
- mPlayer.prepare();
- mPlayer.start();
- //............
- //基本方法
- mPlayer.pause()//暂停播放
- mPlayer.stop()//停止播放
- mPlayer.seekTo(int)//直接跳到某点进行播放
4.播放视频,关键代码如下:
Java代码- MeidaPlayermedia=newMeidaPlayer();
- media.setAudioStreamType(AudioManager.STREAM_MUSIC);
- media.setDisplay(sh);//定义一个SurfaceView播放它
- media.setDataSource(file.getAbsolutePath());
- media.prepare();
- media.start();
5.拍照,关键代码如下
Java代码- Cameracamera=Camera.open();
- Parametersparameters=camera.getParameters();
- parameters.setPreviewSize(420,300);//设置预览照片的大小
- parameters.setPreviewFrameRate(3);//每秒3帧
- parameters.setPictureFormat(PixelFormat.JPEG);//设置照片输出格式
- parameters.set("jpeg-quaility",85);//设置照片质量
- parameters.setPictureSize(420,300);//设置照片大小
- camera.setParameters(parameters);
- camera.setPreviewDisplay(SurfaceView)//定义一个SurfaceView用于显示预览
- camera.startPreview();
- //..........
- //按下拍照键后
- //camera.autoFocus(null);自动对焦
- camera.takePicture(null,null,newPictureClassback());//拍照
- //..............
- //需要实现PictureCallback接口
- privateclassPictureClassbackimplementsPictureCallback{
- publicvoidonPictureTaken(byte[]abyte0,Cameracamera){
- Bitmapbitmap=BitmapFactory.decodeByteArray(abyte0,0,abyte0.length);//根据照片2进制流生成位图
- Filefile=newFile(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");
- FileOutputStreamstream=newFileOutputStream(file);
- bitmap.compress(CompressFormat.JPEG,100,stream);//此方法设置照片质量和输出格式,并且保存图片
- stream.close();
- }
- }
更多相关文章
- android EditText设置不可写
- android 使用html5作布局文件: webview跟javascript交互
- android studio调试c/c++代码
- android“设置”里的版本号
- IM-A820L限制GSM,WCDMA上网的原理(其他泛泰机型可参考)7.13
- 锁屏界面
- android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
- 在Fragment中设置控件点击方法,执行失败。
- Android(安卓)version and Linux Kernel version