最新版本:网站采集源码(网站采集插件)

优采云 发布时间: 2022-11-29 03:44

  最新版本:网站采集源码(网站采集插件)

  

" />

  目前大家都对网站采集插件比较感兴趣,大家都想了解网站采集插件,所以小美也在网上采集

了一些关于网站采集插件的资料分享给大家,希望能帮助到大家.

  1、织梦采集器是一套根据关键词的dedecms自动采集,无需编写复杂的采集规则,自动伪原创

  

" />

  2.自动发布内容的绿色插件。

  本文到此结束,希望对大家有所帮助。

  最新版本:android camera2 采集

  前言

  本文简要介绍了在移动安卓系统下使用Camera2相关API进行视频采集的方法。

  Camera2 是 Google 在 Android 5.0 中添加的新 API,用于取代 Camera1 来操作相机。

  按照惯例,首先是AndroidVideo源代码的副本。Camera2

  调用相机的核心实现来捕获视频.java Camera2Capture。

  权限配置

  要使用 Android 平台提供的相机,您需要先在配置文件中添加以下权限配置:

  获取相机信息

  打开相机管理器

  相机经理

  是用于检测、连接和描述相机设备的系统服务,可以通过调用 Context.getSystemService (java.lang.String) 方法获取 CameraManager 的实例:CameraManager

  mManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);

  获取相机列表信息

  通过调用 CameraManager.getCameraIdList() 方法,可以获取相机 ID 的列表:

  String[] cameraIds = mCameraManager.getCameraIdList();

  for (字符串 id : cameraIds) {/

  /待办事项

  }

  可以通过相应的 ID 从相机管理器获取相应相机的属性集合相机特征。

  在“相机特征”中,您可以获取之前和之后的条件、支持的输出大小、支持的输出格式等内容。

  for (字符串 id : cameraIds) {

  进入相机

  ID获取对应相机的参数集

  相机特征特征 = mManager.get相机特征(id);

  获取相机的支持级别

  整数级别 = 特征.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);

  如果是传统评级,则不建议使用此相机

  如果(级别 == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY)

  {

  继续;

  }

  获取相机的方向

  整数面向 = 特征.get(CameraCharacteristics.LENS_FACING);

  过滤掉前置*敏*感*词*

  如果(面向 != CameraCharacteristics.LENS_FACING_FRONT) {

  继续;

  }

  StreamConfigurationMap 收录

大小、格式等信息以及相机支持的其他信息

  StreamConfigurationMap map = mCameraFeatures.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);

  获取输出格式YUV_420_888时兼容的大小

  Size[] size = map.getOutputSizes(ImageFormat.YUV_420_888);

  

" />

  获取输出视图在为曲面视图时与之兼容的大小/

  /Size[] size = map.getOutputSizes(SurfaceHolder.class);

  TODO的其他参数,如输出格式,上下输出帧率等

  }

  PS:对于 Camera2 采集系统,每个*敏*感*词*都有一个支持级别:

  INFO_SUPPORTED_HARDWARE_LEVEL_3 支持具有高级功能的 YUV 再处理和原创

数据采集。

  INFO_SUPPORTED_HARDWARE_LEVEL_FULL支持高级相机功能。

  INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED向后兼容模式下,底层等效于 Camera1 的实现。

  INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY 随机赠送功能支持,支持不足。

  PS:一般来说,如果相机电平LEVEL_3和LEVEL_FULL,建议使用Camera2进行采集,否则建议使用Camera1进行视频采集,兼容性更好。

  打开相机

  通过相机信息,我们可以找到我们需要的CameraId,然后使用这个ID来获取我们的相机设备CameraDevice。

  函数原型是 public void openCamera(String cameraId, final CameraDevice.StateCallback callback, Handler handler)。

  cameraId 是需要打开的*敏*感*词*的 ID,想要*敏*感*词**敏*感*词*需要传入一个回调,这是第二个参数 CameraDevice.StateCallback,当然,如果我们不希望打开操作占用 UI 线程的时间

  我们可以通过使用 Looper 构造一个 HandlerThread 子线程并将其传递到处理程序中来做到这一点。

  打开相机

  ,正常打开将回调到相机设备状态回调的打开方法

  mManager.openCamera(mCameraId, new CameraDevice.StateCallback() {

  @Override

  公共无效打开(@NonNull相机设备相机) {

  相机连接成功相机

  是我们需要获得的相机设备

  mCameraDevice = camera;

  }

  @Override

  公共无效打开断开连接(@NonNull相机设备相机) {

  相机已断开连接

  }

  @Override

  public void onError(@NonNull CameraDevice camera, int error) {

  打开错误

  }

  }, mHandler);

  创建流量获取会话

  成功打开相机并获取相应的 CameraDevice 后,我们需要创建一个集合会话来提供程序和相机之间的通信。

  它的函数原型是公共抽象 void createCaptureSession(List outputs,CameraCaptureSession.StateCallback callback, Handler handler)抛出 CameraAccessException。

  第一个参数是在需要采集

的 Surface 中传递的,为了*敏*感*词*会话的创建,我们需要传入一个 CameraCaptureSession.StateCallback 回调,当然第三个参数是允许操作在对应的 Handler 线程中执行。

  获取捕获会话会话,正常进程返回到 CameraCaptureSessionStateCallback 的 onConfigured 方法

  mCameraDevice.createCaptureSession(Arrays.asList(mSurfaceView.getHolder().getSurface()), new CameraCaptureSession.StateCallback() {

  @Override

  public void onConfigured(@NonNull CameraCaptureSession session) {

  会话创建成功

  

" />

  mCameraCaptureSession 也是新创建的会话

  mCameraCaptureSession = session;

  }

  @Override

  public void onConfigureFailed(@NonNull CameraCaptureSession session) {

  会话创建失败

  }

  }, mHandler);

  PS:对于一些需要提高捕获帧速率(120fps及以上)的业务需求,createConscuredHighSpeedCaptureSession() 可以很好地支持此功能。

  发送采集

请求

  当需要开始采集时,您可以构造一个采集

请求,然后将此请求发送到采集会话。

  基于录制文件创建请求

  mRequest = mDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);

  将所需的目标曲面添加到“目标”列表

  mRequest.addTarget(surface);

  重复发送此请求以进行连续采集

  mCameraCaptureSession.setRepeatingRequest(mRequest.build(), NULL, mHandler);

  原创

数据回调

  在 Camera1 的采集中,我们一般通过设置 setPreviewCallbackWithBuffer() 和 addCallbackBuffer() 来获取采集

的原创

数据,那么这个函数在 Camera2 中会如何实现呢?

  我们可以使用 ImageReader 类:

  ImageReader 是一个数据回调模块,类似于 Camera1 的 setPreviewCallbackWithBuffer

  mReader = ImageReader.newInstance(mConfig.mWidth, mConfig.mHeight, mConfig.mFormat, 2);

  mReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {

  @Override

  public void onImageAvailable(ImageReader reader) {图像

  图像 = reader.acquirenextImage();

  数据处理

  image.close();

  }

  }, mHandler);

  我们需要在 createCaptureSession() 的第一个参数中传递 ImageReader's Surface:

  通过 ImageReader.getSurface() 获取 Surface 并将其传递给会话

  mCameraDevice.createCaptureSession(Arrays.asList(mReader.getSurface())//....);

  然后在捕获请求中添加此目标:中

  当然,在构造请求时,需要同时将 Surface 添加到请求的目标列表中。

  mRequest.addTarget(mReader.getSurface());

  引用

  结论

  本文简要介绍了基于 Camera2 API 的 Android 平台的相机捕获功能。

  虽然相机2

  是目前谷歌推荐的采集框架,由于厂商的兼容性问题,Camera2 的 API 功能相对不稳定。

  因此,笔者仍然建议,开发一个以Camera1为主要采集,Camera2作为辅助采集的架构更可靠。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线