您的位置:首页 > 移动开发 > Android开发

android 视频音频 照相的基本操作

2013-08-22 21:35 267 查看
播放音乐和视频用的是类:MediaPlayer

刻录声音和视频用的是类:MediaRecorder

拍照:Camera

没什么难度,都是调用android的API

1.刻录视频,关键代码如下:

Java代码


MediaRecorder mediaRecorder = new MediaRecorder();
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卡根目录*/
File videoFile = new File(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 = new MediaRecorder();
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代码


MediaPlayer mPlayer = new MediaPlayer();
mPlayer.reset
mPlayer.setDataSource(mFileName); //设置播放的声音文件
mPlayer.prepare();
mPlayer.start();

//............
//基本方法
mPlayer.pause() //暂停播放
mPlayer.stop() //停止播放
mPlayer.seekTo(int) //直接跳到某点进行播放

4.播放视频,关键代码如下:

Java代码


MeidaPlayer media = new MeidaPlayer();
media.setAudioStreamType(AudioManager.STREAM_MUSIC);
media.setDisplay(sh); //定义一个SurfaceView播放它
media.setDataSource(file.getAbsolutePath());
media.prepare();
media.start();

5.拍照,关键代码如下

Java代码


Camera camera = Camera.open();
Parameters parameters = 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, new PictureClassback()); //拍照

//..............
//需要实现PictureCallback接口
private class PictureClassback implements PictureCallback{

public void onPictureTaken(byte[] abyte0, Camera camera) {
Bitmap bitmap = BitmapFactory.decodeByteArray(abyte0, 0, abyte0.length); //根据照片2进制流生成位图
File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");
FileOutputStream stream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 100, stream); //此方法设置照片质量和输出格式,并且保存图片
stream.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: