使用<video>
标签显示相机画面,并通过调用navigator.mediaDevices.getUserMedia()
方法获取用户媒体流,然后通过srcObject
属性将媒体流赋值给<video>
元素的srcObject
属性,即可自动显示相机画面。
通过添加一个按钮,当点击按钮时,通过判断当前相机的facingMode
状态(”user”表示前置摄像头,”environment”表示后置摄像头),然后调用navigator.mediaDevices.getUserMedia()
方法切换到对应的摄像头,再将获取到的媒体流赋值给<video>
元素的srcObject
属性,即可实现前后摄像头的切换功能。
完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1" > < title >Camera H5</ title > </ head > < body > <!-- 用于显示相机视频的<video>元素 --> < video id = "video" autoplay playsinline></ video > <!-- 用于切换前后摄像头的按钮 --> < button id = "switchButton" >Switch Camera</ button > < script > // 获取视频元素和切换按钮元素 var video = document.getElementById("video"); var switchButton = document.getElementById("switchButton"); // 获取用户媒体流并显示相机画面 navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment" } }) .then(function (stream) { video.srcObject = stream; }) .catch(function (error) { console.log("Error accessing camera: " + error); }); // 切换前后摄像头 switchButton.addEventListener("click", function () { if (video.srcObject) { var videoTracks = video.srcObject.getVideoTracks(); if (videoTracks.length > 0) { var facingMode = videoTracks[0].getSettings().facingMode; var newFacingMode = (facingMode === "user") ? "environment" : "user"; navigator.mediaDevices.getUserMedia({ video: { facingMode: newFacingMode } }) .then(function (stream) { video.srcObject = stream; }) .catch(function (error) { console.log("Error switching camera: " + error); }); } } }); </ script > </ body > </ html > |