原生JavaScript實現錄屏功能

1. 前言

使用JavaScript實現瀏覽器中打開系統錄屏功能

示例圖:

示例圖

2. 源碼

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><button id="start">開始錄制</button><button id="end">結束錄制</button><script>let recorder;// 開始錄制視頻按鈕點擊事件document.getElementById('start').addEventListener('click', function () {// 獲取當前屏幕,video:true表示獲取屏幕,audio:true表示獲取聲音navigator.mediaDevices.getDisplayMedia({ video: true, audio: true }).then(stream => {// stream就是返回的視頻流// 使用MediaRecorder錄制視頻流recorder = new MediaRecorder(stream);// 定義data變量,用于存放視頻數據const data = [];// 在ondataavailable(錄制視頻的時候觸發)recorder.ondataavailable = function (e) {// 將視頻數據添加到data中data.push(e.data);};// onstop表示視頻錄制完畢recorder.onstop = function () {// 獲取錄制窗口并調用stop方法停止錄制this.stream.getTracks().forEach(track => track.stop());// 將視頻數據轉化為blob對象const blob = new Blob(data, { type: this.mimeType });// 創建a標簽(用于下載)const a = document.createElement('a');// 使用URL.createObjectURL給視頻流創建鏈接a.href = URL.createObjectURL(blob);// 設置下載時的視頻名稱a.download = new Date().getTime() + '.webm';// 調用a標簽的click方法下載視頻a.click();// 使用URL.revokeObjectURL方法釋放占用的資源URL.revokeObjectURL(a.href);// 刪除a標簽a.remove();};// recorder.start()開始錄制recorder.start();});});// 結束錄制視頻按鈕點擊事件document.getElementById('end').addEventListener('click', function () {// 停止錄屏recorder.stop();});</script></body>
</html>## 3. 總結
以上就是本期分享的全部內容了,本篇博客只是分享的錄屏的小demo,使用時可以根據不同的情景調整源碼,例如騰訊會議的這種實時分享屏幕之類的需求

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41566.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LabVIEW機器視覺系統中的圖像畸變、校準和矯正

在機器視覺應用中&#xff0c;圖像畸變、校準和矯正是確保圖像準確性的關鍵步驟。LabVIEW作為一種強大的圖像處理和分析工具&#xff0c;提供了一系列功能來處理這些問題。以下是對圖像畸變、校準和矯正的詳細介紹。 圖像畸變 圖像畸變 是指由于攝像鏡頭的光學特性或拍攝角度問…

算法重新刷題

基礎算法 前綴和 一維前綴和 [USACO16JAN] Subsequences Summing to Sevens S - 洛谷 這一題主要是需要結合數學知識來求解&#xff0c; #include <iostream> #include <cstring> #include <cstdio> #include <algorithm>using namespace std;con…

06pymysql

【一】pymysql 1.我們可以利用pymysql在python中操作數據庫 原理是pyMySQL-->是封裝好的執行subprocess鏈接數據庫執行數據庫命令的模塊 官網&#xff1a;https://zetcode.com/python/pymysql/ 【二】使用示例 import pymysql from pymysql.cursors import DictCursor ?…

進入防火墻Web管理頁面(eNSP USG6000V)和管理員模塊

1、進入防火墻Web管理頁面 USG系列是華為提供的一款高端防火墻產品&#xff0c;其特點在于提供強大的安全防護能力和靈活的擴展性。 以eNSP中的USG6000為例&#xff1a; MGMT口&#xff08;web管理口&#xff09;&#xff1a;對應設備上的G0/0/0口&#xff0c;上面初始配有一…

如何在Spring Boot中實現實時通知

如何在Spring Boot中實現實時通知 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將討論如何在Spring Boot應用中實現實時通知功能&#xff0c;這在現代…

Java的awt和swing的區別

AWT&#xff08;Abstract Window Toolkit&#xff09;和Swing都是Java中用于創建圖形用戶界面&#xff08;GUI&#xff09;的工具包&#xff0c;但它們之間存在一些關鍵的區別。下面我將通過具體的例子來說明這些區別&#xff1a; 1. 跨平臺性能 AWT&#xff1a; AWT是基于本…

實驗六 圖像的傅立葉變換

一&#xff0e;實驗目的 1了解圖像變換的意義和手段&#xff1b; 2熟悉傅立葉變換的基本性質&#xff1b; 3熟練掌握FFT變換方法及應用&#xff1b; 4通過實驗了解二維頻譜的分布特點&#xff1b; 5通過本實驗掌握利用MATLAB編程實現數字圖像的傅立葉變換。 6評價人眼對圖…

LeetCode 每日一題 2024/7/1-2024/7/7

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄 7/1 2065. 最大化一張圖中的路徑價值7/2 3115. 質數的最大距離7/3 3099. 哈沙德數7/4 3086. 拾起 K 個 1 需要的最少行動次數7/5 3033. 修改矩陣7/6 3101. 交替子數組計數7…

第一周周日總結

題目總結 1.給你一個整數數組 hours&#xff0c;表示以 小時 為單位的時間&#xff0c;返回一個整數&#xff0c;表示滿足 i < j 且 hours[i] hours[j] 構成 整天 的下標對 i, j 的數目。 整天 定義為時間持續時間是 24 小時的 整數倍 。 例如&#xff0c;1 天是 24 小時…

C# MathNet

Vector使用 Build.Dense 創建列向量:列向量轉行向量&#xff08;行矩陣&#xff09;:使用 DenseOfArray 方法:使用 PointwiseMultiply 進行向量元素級乘法:計算向量的點積&#xff08;內積&#xff09;&#xff1a;訪問向量的特定元素&#xff1a;遍歷向量中的所有元素&#xf…

公眾號文章閱讀20w+?你猜騰訊給了我多少錢?

前兩天寫的一篇文章&#xff0c; 《1000T的文件怎么能快速從南京傳到北京&#xff1f;最佳方案你肯定想不到》 一不小心被平臺推薦&#xff0c;閱讀量居然達到了20w&#xff08;這篇收益在文章底部&#xff01;&#xff09;。 留言也是相當精彩 說來慚愧&#xff0c;這篇文章我…

【74LS163做24進制計數器】2021-11-19

緣由用74LS163做24進制計數器-其他-CSDN問答,仿真multisim兩個74LS163芯片如何構成47進制計數器-吐槽問答-CSDN問答 參考74ls163中文資料匯總&#xff08;74ls163引腳圖及功能_內部結構圖及應用電路&#xff09; - 電子發燒友網

蒼穹外賣 ...待更新

蒼穹外賣 1、 阿里云OSS2、菜品分類查詢 1、 阿里云OSS 工具類 package com.sky.utils;import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import lombok.AllArgsConstructor…

深入理解Qt智能指針

目錄 1.引言 2.共享數據 2.1.特點 2.2.QSharedData 2.3.隱式共享 2.4.顯示共享 3.共享指針 3.1.QSharedPointer 3.2.QWeakPointer 4.范圍指針 4.1.QScopedPointer 4.2.QScopedArrayPointer 5.追蹤特定QObject對象生命 6.總結 1.引言 在 Qt 中&#xff0c;智能指針…

計算樣本之間的相似度

文章目錄 前言一、距離度量1.1 歐幾里得距離&#xff08;Euclidean Distance&#xff09;1.2 曼哈頓距離&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距離&#xff08;Chebyshev Distance&#xff09;1.4 閔可夫斯基距離&#xff08;Minkowski Distance&#xff09…

docker容器技術、k8s的原理和常見命令、用k8s部署應用步驟

容器技術 容器借鑒了集裝箱的概念&#xff0c;集裝箱解決了什么問題呢&#xff1f;無論形狀各異的貨物&#xff0c;都可以裝入集裝箱&#xff0c;集裝箱與集裝箱之間不會互相影響。由于集裝箱是標準化的&#xff0c;就可以把集裝箱整齊擺放起來&#xff0c;裝在一艘大船把他們…

瀏覽器插件利器-allWebPluginV2.0.0.14-stable版發布

allWebPlugin簡介 allWebPlugin中間件是一款為用戶提供安全、可靠、便捷的瀏覽器插件服務的中間件產品&#xff0c;致力于將瀏覽器插件重新應用到所有瀏覽器。它將現有ActiveX插件直接嵌入瀏覽器&#xff0c;實現插件加載、界面顯示、接口調用、事件回調等。支持谷歌、火狐等瀏…

Spring Boot+Blockchain:區塊鏈入門Demo

1. 引言 區塊鏈技術近年來迅速發展&#xff0c;其去中心化、不可篡改和透明性等特點吸引了眾多開發者和企業的關注。為了便于理解和應用區塊鏈技術&#xff0c;本文將介紹如何使用Spring Boot集成區塊鏈&#xff0c;構建一個簡單的區塊鏈Demo。 2. 項目準備 2.1 環境要求 在…

MYSQL安裝及環境配置

1.數據庫下載 1.1 瀏覽器下載相應版本&#xff0c;如果相應版本不在此頁&#xff0c;可點擊Archives &#xff0c;然后選擇相應版本 https://dev.mysql.com/downloads/mysql/ 1.2 放置指定目錄&#xff0c;并將其解壓 2.配置數據庫環境變量 2.1 使用電腦win鍵 Q &#xff0c;…

在C++中使用的錯誤處理策略

在C中&#xff0c;錯誤處理是一個重要且復雜的主題&#xff0c;因為它要求開發者在設計和編碼時考慮到程序可能遇到的各種異常情況。C提供了幾種不同的機制來處理錯誤&#xff0c;每種機制都有其適用的場景和優缺點。下面我將概述幾種常見的C錯誤處理策略&#xff1a; 1. 返回…