欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用JS創(chuàng)建一個錄屏功能

 更新時間:2021年11月10日 09:38:48   作者:前端小智  
這篇文章主要介紹了利用JS創(chuàng)建一個錄屏功能,創(chuàng)建這個功能錢我們首先創(chuàng)建一個HTML文件,包含記錄按鈕和一個播放標簽,下面來看看創(chuàng)建的詳細過程

OBS studio很酷,但 JavaScript 更酷,現在,我們用 JavaScript 創(chuàng)建自己的錄屏功能。

首先,創(chuàng)建一個HTML文件,包含記錄按鈕和一個播放標簽,

內容如下:

<!DOCTYPE html> 
<html> 
  <head> 
    <title>Parcel Sandbox</title> 
    <meta charset="UTF-8" /> 
  </head> 
  <body> 
    <video class="video" width="600px" controls></video> 
    <button class="record-btn">record</button> 
 
    <script src="./index.js"></script> 
  </body> 
</html> 

然后在創(chuàng)建 index.js,

監(jiān)聽按鈕的點擊:

let btn = document.querySelector(".record-btn"); 
 
btn.addEventListener("click", function () { 
  console.log("hello"); 
}); 

在瀏覽器中打開 html文件,點擊按鈕,我們可以在控制臺看到打印的 hello。

現在把打印去掉,換成如下的內容:

let btn = document.querySelector(".record-btn"); 
 
btn.addEventListener("click", async function () { 
  let stream = await navigator.mediaDevices.getDisplayMedia({ 
    video: true 
  }); 
}); 

現在點擊按鈕,會彈出屏幕選擇框:

因為,我現在用的是兩個屏幕,所以會出現兩個選擇。

現在你可能認為選擇一個屏幕,然后點擊分享,就開始錄制了。非也,這個比我們想象中的復雜點。我們要使用 MediaRecorder 來錄制我們的視頻。

let btn = document.querySelector(".record-btn") 
 
btn.addEventListener("click", async function () { 
  let stream = await navigator.mediaDevices.getDisplayMedia({ 
    video: true 
  }) 
 
  // 需要更好的瀏覽器支持 
  const mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9")  
             ? "video/webm; codecs=vp9"  
             : "video/webm" 
    let mediaRecorder = new MediaRecorder(stream, { 
        mimeType: mime 
    }) 
    // 必須手動啟動 
    mediaRecorder.start() 
}) 

當我們的屏幕被錄制下來時,mediaRecorder 會給我們提供分塊的數據,我們需要將這些數據存儲在一個變量中。

let btn = document.querySelector(".record-btn") 
 
btn.addEventListener("click", async function () { 
  let stream = await navigator.mediaDevices.getDisplayMedia({ 
    video: true 
  }) 
 
  // 需要更好的瀏覽器支持 
  const mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9")  
             ? "video/webm; codecs=vp9"  
             : "video/webm" 
    let mediaRecorder = new MediaRecorder(stream, { 
        mimeType: mime 
    }) 
 
    let chunks = [] 
    mediaRecorder.addEventListener('dataavailable', function(e) { 
        chunks.push(e.data) 
    }) 
 
    // 必須手動啟動 
    mediaRecorder.start() 
}) 

現在,當我們點擊停止共享按鈕時,希望在我們的 video元素中播放錄制的視頻,可以這么做:

let btn = document.querySelector(".record-btn") 
 
btn.addEventListener("click", async function () { 
  let stream = await navigator.mediaDevices.getDisplayMedia({ 
    video: true 
  }) 
 
  // 需要更好的瀏覽器支持 
  const mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9")  
             ? "video/webm; codecs=vp9"  
             : "video/webm" 
    let mediaRecorder = new MediaRecorder(stream, { 
        mimeType: mime 
    }) 
 
    let chunks = [] 
    mediaRecorder.addEventListener('dataavailable', function(e) { 
        chunks.push(e.data) 
    }) 
 
     mediaRecorder.addEventListener('stop', function(){ 
          let blob = new Blob(chunks, { 
              type: chunks[0].type 
          }) 
 
          let video = document.querySelector(".video") 
          video.src = URL.createObjectURL(blob) 
      }) 
 
 
    // 必須手動啟動 
    mediaRecorder.start() 
}) 

現在基本就可以完成了,可以在潤色下,如自動下載錄制的視頻,

可以這么做:

let btn = document.querySelector(".record-btn") 
 
btn.addEventListener("click", async function () { 
  let stream = await navigator.mediaDevices.getDisplayMedia({ 
    video: true 
  }) 
 
  // 需要更好的瀏覽器支持 
  const mime = MediaRecorder.isTypeSupported("video/webm; codecs=vp9")  
             ? "video/webm; codecs=vp9"  
             : "video/webm" 
    let mediaRecorder = new MediaRecorder(stream, { 
        mimeType: mime 
    }) 
 
    let chunks = [] 
    mediaRecorder.addEventListener('dataavailable', function(e) { 
        chunks.push(e.data) 
    }) 
 
   mediaRecorder.addEventListener('stop', function(){ 
      let blob = new Blob(chunks, { 
          type: chunks[0].type 
      }) 
      let url = URL.createObjectURL(blob) 
 
      let video = document.querySelector("video") 
      video.src = url 
 
      let a = document.createElement('a') 
      a.href = url 
      a.download = 'video.webm' 
      a.click() 
  }) 
 
 
    // 必須手動啟動 
    mediaRecorder.start() 
}) 

現在,最基本的一個錄制功能就完善了,動手來試試吧!!

到此這篇關于用JS創(chuàng)建一個錄屏功能的文章就介紹到這了,更多相關JS創(chuàng)建一個錄屏功能內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用JavaScript寫一個簡單計算器

    利用JavaScript寫一個簡單計算器

    這篇文章主要介紹了?如何利用JavaScript寫一個簡單計算器,利用JavaScript寫一個簡單計算器算是一個簡單的小練習吧,需要的小伙伴可以參考一下<BR>
    2021-11-11
  • 微信小程序 地圖map實例詳解

    微信小程序 地圖map實例詳解

    這篇文章主要介紹了微信小程序 地圖map實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • 5種 JavaScript 方式實現數組扁平化

    5種 JavaScript 方式實現數組扁平化

    這篇文章主要介紹5種 JavaScript 方式實現數組扁平化,雖說只有5種方法,但是核心只有一個就是遍歷數組arr,若arr[i]為數組則遞歸遍歷,直至arr[i]不為數組然后與之前的結果concat。 想具體了解的小伙伴那請看下面文章內容吧
    2021-09-09
  • 微信小程序實現頁面跳轉傳值的方法

    微信小程序實現頁面跳轉傳值的方法

    這篇文章主要介紹了微信小程序實現頁面跳轉傳值的方法的相關資料,希望通過本文能幫助到大家,讓大家實現這樣的功能,需要的朋友可以參考下
    2017-10-10
  • JavaScript?腳本實現復雜的查詢改寫示例

    JavaScript?腳本實現復雜的查詢改寫示例

    這篇文章主要為大家介紹了JavaScript?腳本實現復雜的查詢改寫示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Javascript 解構賦值詳情

    Javascript 解構賦值詳情

    這篇文章主要介紹了Javascript 解構賦值詳情,解構賦值是ES6中的特性,可以將對象或數組中的值同時賦值給多個變量。西阿棉一起來看看詳細內容吧,需要的朋友可以參考下
    2021-11-11
  • JavaScript兩張圖搞懂原型鏈

    JavaScript兩張圖搞懂原型鏈

    這篇文章主要分享JavaScript的兩張原型鏈圖,我們上一篇文章介紹了JavaScript中的原型,為什么不將原型鏈一起介紹了呢?因為JavaScript中的原型鏈是一個難點,也是一個面試必問的考點,現在就來學習一下具體內容吧
    2021-12-12
  • 微信瀏覽器禁止頁面下拉查看網址實例詳解

    微信瀏覽器禁止頁面下拉查看網址實例詳解

    這篇文章主要介紹了微信瀏覽器禁止頁面下拉查看網址實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • 前端Website?sitemap.xml文件搜索引擎優(yōu)化

    前端Website?sitemap.xml文件搜索引擎優(yōu)化

    這篇文章主要為大家介紹了前端Website的sitemap.xml文件和搜索引擎優(yōu)化實現詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • JavaScript中MutationObServer監(jiān)聽DOM元素詳情

    JavaScript中MutationObServer監(jiān)聽DOM元素詳情

    這篇文章主要給大家分享的是?JavaScript中MutationObServer監(jiān)聽DOM元素詳情,DOM的MutationObServer接口,可以在DOM被修改時異步執(zhí)行回調函數,我的理解就是可以監(jiān)聽DOM修改。下面來看看文章的詳細內容,需要的朋友可以參考一下
    2021-11-11

最新評論