Android获取摄像头视频帧并实时处理(转载)
16lz
2021-01-26
原文出处:http://blog.csdn.net/jefry_xdz/article/details/7901587
Android有一种机制,如果想在回调函数onPreviewFrame(byte[] data, Camera camera)中获取视频数据,必须调用camera.startPreview(); onPreviewFrame才会有视频数据回调过来。有时候我们不想预览视频而获取视频数据,那我们怎么办?
我们可以产生一种错误的视觉效应,感觉“没有预览”,其实是预览了。我这样一说,有些人可能会有些疑惑。其实很好理解,只要我们把预览View的长度与宽度都设置为1px,一块1px平方大小的区域,放在UI中的任何一个位置根本看不到,这样就达到了“不预览”,获取视频数据的目的。(其实是预览了的哦!!!)
感觉有预览的图片如下:
感觉没预览的图片如下:
感觉没预览的代码如下:
[java] view plain copy
- package com.jefry.camera;
- import java.io.File;
- import java.util.Timer;
- import android.app.Activity;
- import android.hardware.Camera;
- import android.hardware.Camera.Parameters;
- import android.hardware.Camera.PreviewCallback;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- public class CameraPreview extends Activity implements SurfaceHolder.Callback,PreviewCallback{
- SurfaceHolder surfaceHolder ;
- Camera camera ;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- SurfaceView view = (SurfaceView) findViewById(R.id.surface_view);
- view.getHolder().addCallback(this);
- view.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- }
- public void surfaceCreated(SurfaceHolder holder) {
- }
- public void surfaceChanged(SurfaceHolder holder, int format, int width,
- int height) {
- try{
- camera = Camera.open();
- camera.setPreviewDisplay(holder);
- Parameters params = camera.getParameters();
- params.setPreviewSize(352, 288);
- camera.setParameters(params);
- camera.startPreview() ;
- camera.setPreviewCallback(this);
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- public void surfaceDestroyed(SurfaceHolder holder) {
- if(camera != null) camera.release() ;
- camera = null ;
- }
- public void onPreviewFrame(byte[] data, Camera camera) {
- Log.i("jefry", "vedio data come ...");
- }
- }
布局文件:
[html] view plain copy
更多相关文章
- Android(安卓)MediaPlayer支持的音视频格式和协议
- Android(安卓)使用ExoPlayer视频播放 (二)
- android 获取视频缩略图终极解决方案(ffmpeg)
- Android添加新的视频格式--媒体库扫描
- Android视频流解码
- Android(安卓)Camera的预览回调接口PreviewCallback使用
- 微信视频全屏问题解决方案
- 动态壁纸,视频特效- Android
- android播放网络或者本地视频(截取某帧做封面)VideoView原生控件