Android 多媒体之视频
来源:互联网 发布:linux java控制面板 编辑:程序博客网 时间:2024/06/01 08:27
首先做一个简单的视频播放器,就需要做的一个控件:SurfaceView(视频播放器),可以展示画面。了解这个之后,一个简单的视频播放器就是在音乐播放器的基础上加上他SurfaceView。再将媒体播放器的捕捉的画面展示到surfaceView mediaPlayer.setDisplay(main_surfaceview.getHolder());就可以了。
音乐播放器可参考上一篇:http://blog.csdn.net/qq_35731570/article/details/56016627 Android多媒体之音乐播放器。
除了这个还有 拍视频 拍照片 这两个,都需要用到surfaceView 。
这个就不详细说,看代码,有注释。谢谢大家。
拍照片:
public class PhotoActivity extends AppCompatActivity { private SurfaceView photo_surface; private Camera camera; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_photo); //得到surfaceView photo_surface = (SurfaceView) findViewById(R.id.photo_surface); photo_surface.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder surfaceHolder) { //打开照相机 camera = Camera.open(); //设置照相机的参数 Camera.Parameters parameters= camera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG); parameters.set("jpeg-quality",85); camera.setParameters(parameters); //将画面展示到SurfaceView try { camera.setPreviewDisplay(photo_surface.getHolder()); //开启预览 camera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { } @Override public void surfaceDestroyed(SurfaceHolder surfaceHolder) { //关闭照相机 if(camera!=null){ camera.release(); camera.stopPreview(); camera=null; } } }); } public void takePhoto(View view){ //点击拍照 camera.takePicture(null, null, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] bytes, Camera camera) { //实例化文件输出流 在写入 //压缩(图片) //将字节数组转成Bitmap Bitmap bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length); try { //当前系统时间的毫秒数 FileOutputStream fos=new FileOutputStream("/mnt/sdcard/kugou/mv/G150831_"+System.currentTimeMillis()+".png"); bitmap.compress(Bitmap.CompressFormat.PNG,85,fos); //重新继续拍照 camera.stopPreview(); camera.startPreview(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }); }}
拍视频
public class RecorderActivity extends AppCompatActivity { private MediaRecorder mediaRecorder; private SurfaceView sv_media_recorder_surface; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recorder); sv_media_recorder_surface = (SurfaceView) findViewById(R.id.sv_media_recorder_surface); //实例化媒体录制器 mediaRecorder = new MediaRecorder(); } //开始 public void start(View view){ mediaRecorder.reset(); //设置参数 //设置音频,视频来源 mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置输出格式 mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //设置编码格式(视频,音频) mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //设置保存路径 mediaRecorder.setOutputFile("/mnt/sdcard/kugou/mv/G150831_"+System.currentTimeMillis()+".mp4"); //画面 mediaRecorder.setPreviewDisplay(sv_media_recorder_surface.getHolder().getSurface()); //准备 try { mediaRecorder.prepare(); mediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); } } //停止 public void stop(View view){ mediaRecorder.stop(); }}
这就到这里了。
0 0
- Android 多媒体之视频
- Android多媒体之处理视频
- Android多媒体之音频、视频录制MediaRecorder
- Android 多媒体应用:视频播放之Vitamio
- Android-多媒体之VideoView视频播放器
- android之旅24 多媒体编程:音乐、视频、拍照、视频
- android 多媒体,视频,照相
- android 多媒体 视频播放
- 初学Android,多媒体之使用VideoView播放视频(七十七)
- Android学习笔记_27_多媒体之视频刻录
- Android多媒体播放之视频播放的方法
- Android 多媒体应用:MediaRecorder 录制音视频 之 音频
- Android 多媒体应用:视频播放之VideoView与SurfaceView
- Android 多媒体应用:MediaRecorder 录制音视频 之 音频
- Android 多媒体应用:视频播放之VideoView与SurfaceView
- Android开发之基础---------多媒体音乐和视频播放
- Android多媒体之视频播放器高级开发
- Android多媒体播放器之视频播放器
- iOS对象内存结构中的 isa 指针是用来做什么的?
- js中for语句
- 发现css超过字数就用省略号代替的一个属性
- JAVA小白的奋斗之旅:面向对象
- 2. 操作系统引导
- Android 多媒体之视频
- WebApi 接口参数传参详解
- 看图说maven系列(二)
- C中链表
- 线性表-队列的链式表示
- 人活着系列之芳姐和芳姐的猪
- zk 验证的设置
- Date、String和TimeStamp
- 点击网页上图片,发起临时QQ会话