最新版本:网站采集源码(网站采集插件)
优采云 发布时间: 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作为辅助采集的架构更可靠。