关于摄像头:浏览器获取摄像头麦克风设备列表

开发直播类的网页利用时,往往须要在开播前检测摄像头和麦克风是否失常,本文介绍一下浏览器如何获取到可用的摄像头和麦克风设施列表。媒体接口mediaDevices.getUserMedia()mediaDevices.enumerateDevices()须要用到下面两个媒体接口,getUserMedia()用于获取用户受权,enumerateDevices()用于获取可用设施列表。 代码实现async function openUserMedia(e) { // 1. 获取到设施受权 await navigator.mediaDevices.getUserMedia({video: true, audio: true}); // 2. 获取设施列表 navigator.mediaDevices.enumerateDevices() .then(function(devices) { devices.forEach(function(device) { console.log(device.kind + ": " + device.label + " id = " + device.deviceId); }); }) .catch(function(err) { console.log(err.name + ": " + err.message); });}openUserMedia()如果有一个或多个 MediaStream 处于活动状态或者取得了长久受权,将会输入以下内容: audioinput: 默认 - MacBook Air麦克风 (Built-in) id = defaultaudioinput: MacBook Air麦克风 (Built-in) id = 343f8207e0b9ebc3f9a98cde134d2818e64b2141b3bd087c58974c727bdca8c0videoinput: FaceTime HD Camera id = 5ce24d4798ba56b830bc8adc4bcc7171dbe0fcca481f739606190492b21a1e21videoinput: OBS Virtual Camera (m-de:vice) id = 495bd88129048451bf9b0c5c9342f298c55fdaedf91b3cfe0470a4cbc36e4d26audiooutput: 默认 - MacBook Air扬声器 (Built-in) id = defaultaudiooutput: MSI PAG271P (HDMI) id = c20fbe0e2317c5f754d7e334acfeee6b39e7cd64fd37a3ed536142a7ec64f296audiooutput: MacBook Air扬声器 (Built-in) id = cea14bbd0ab3b96fd22d84941c63aac1c6de60646744efa2d5bd20fa566b7600能够看到有音频输出、音频输入、视频输出设施。 ...

September 13, 2022 · 2 min · jiezi

关于摄像头:开发笔记3Onvif协议的两种实现方式

目录零、前言一、Onvif协定的C语言实现  1. 参考文章  2. 集成形式  3. 办法调用    a. 探寻设施    b. 获取设施能力    c. 获取token    d. 获取推流url    e. ptz进行挪动    f. ptz继续挪动    g. ptz绝对挪动    h. ptz获取以后状态二、Onvif协定收发XML实现  1. 集成形式  2. 办法调用    a. 探寻设施    b. 获取设施所有信息    c. ptz管制三、iOS下的注意事项<h2 id='0'>零、前言</h2> 最近公司须要集成摄像头,采纳Onvif协定,网上没找到能够间接运行的代码或者可运行的都须要大量积分,所以本人找材料参考实现,现将代码和集成形式分享进去。若您非iOS平台,参考Onvif协定的C语言实现即可;iOS平台倡议应用Onvif协定收发XML实现。本文不会具体解说Onvif协定,简略介绍代码的应用。如果工程对您有用,心愿能点一个⭐,谢谢。 <h2 id='1'>一、Onvif协定的C语言实现</h2> <h3 id='1-1'>  1. 参考文章</h3> ONVIF协定网络摄像机(IPC)客户端程序开发 <h3 id='1-2'>  2. 集成形式</h3> 将以下文件拖入工程 (非iOS工程须要本人集成openssl) <h3 id='1-3'>  3. 办法调用</h3> (以下OC办法都是通过C语言实现,非iOS平台批改办法名,本人设置回调即可。) <h4 id='1-3-a'>    a. 探寻设施</h3> + (int)detectDeviceResult:(BYOnvifResultItem *)resultItem;<h4 id='1-3-b'>    b. 获取设施能力</h3> 留神:以下操作都须要鉴权,而且每次调用onvif库函数,都须要鉴权一次。 传入上一步获取的设施地址 (海康的设施地址须要做宰割)通用设备能够取得: media地址ptz管制地址+ (int)getCapabilityWithDeviceAddr:(NSString *)deviceXAddrStr userName:(NSString *)userName password:(NSString *)password result:(BYOnvifResultItem *)resultItem;<h4 id='1-3-c'>    c. 获取token</h3> 传入上一步获取的media地址获取token + (NSString *)getProfilesWithAddr:(NSString *)capabilityXAddr userName:(NSString *)userName password:(NSString *)password result:(BYOnvifResultItem *)resultItem;<h4 id='1-3-d'>    d. 获取推流url</h3> 传入media地址和上一步获取的token取得streamUrl,播放地址须要做用户名明码拼接,例如: rtsp://192.168.0.100/onvif/stream_service拼接成 rtsp://username:password@192.168.0.100/onvif/stream_service(IJKPlayer默认不反对rtsp协定),须要批改编译选项 + (int)getStreamUriWithAddr:(NSString *)mediaXAddrStr profileToken:(NSString *)profileTokenStr userName:(NSString *)userName password:(NSString *)password result:(BYOnvifResultItem *)resultItem;<h4 id='1-3-e'>    e. ptz进行挪动</h3> ...

June 8, 2021 · 1 min · jiezi

html5调用手机摄像头

曾经做过一个项目,仿照当下最火的军装照页面,做出图片融合效果。当时的整个项目组都动容了,太难了,总共用了三种方案 1、canvas 2、python opencv3、C++ 这些不是重点,重点是在上传照片调取摄像头功能 上传照片 <input type='file'>标签,如果调用摄像头,很多小伙伴就会想到js各种API,但最终一无所获,其实html5就可以解决 <input type="file" accept="image/*" capture="camera"><input type="file" accept="video/*" capture="camcorder"><input type="file" accept="audio/*" capture="microphone">capture表示可以捕获到系统默认的设备accept表示直接打开系统文件目录camera表示摄像头camcorder表示摄像机microphone表示录音 在给大家普及一下multiple属性,表示可以支持多选 <input type="file" accept="image/*" multiple> 加上multiple标签 capture就没什么用了,注意:本人亲测,multiple在ios下好用,android下不好使 虽然javascript是弱类型语言,受限于设备,但是随着技术的逐渐更新,设备机能的逐渐高新,我相信javascript逐渐会越来越强大的。

May 23, 2019 · 1 min · jiezi

OpenCV调用摄像头

OpenCV调用摄像头环境python:python3.6摄像头:网络摄像头Python库:openCV # -*- coding: utf-8 -*-# @author leone# @desc 使用 python 的 openCV 获取网络摄像头的数据# @version 2018-12-23import cv2import sys# 根据摄像头设置IP及rtsp端口url = 'rtsp://account:password@192.168.0.35:554/11'# 读取视频流cap = cv2.VideoCapture(url)# 设置视频参数cap.set(3, 480)print(cap.isOpened())print(sys.version)print(cv2.__version__)while cap.isOpened(): ret_flag, img_camera = cap.read() cv2.imshow("camera", img_camera) # 每帧数据延时 1ms, 延时为0, 读取的是静态帧 k = cv2.waitKey(1) if k == ord('s'): cv2.imwrite("test.jpg", img_camera) if k == ord('q'): break# 释放所有摄像头cap.release()# 删除窗口cv2.destroyAllWindows()由于网络摄像头的RTSP:实时流协议要手动开启,进入你的摄像头管理界面,例如:192.168.0.35 找到设置->网络设置->RTSP设置->开启RTSP开关 最好保存设置,并重启摄像头。 另外附上基于python的人脸识别demo支持多张人脸github

April 26, 2019 · 1 min · jiezi