<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          簡單的學(xué)習(xí)下 JavaScript 錄屏API

          共 3050字,需瀏覽 7分鐘

           ·

          2023-07-02 18:13

          2ea1eab8f6c4ff05562bc0438a127c86.webp

          學(xué)習(xí)如何使用這個(gè)簡單易用的API進(jìn)行屏幕共享、屏幕錄制等操作。 盡管需要對(duì)JavaScript有一定的了解,但我相信你已經(jīng)具備了這方面的知識(shí)。

          1、開始錄制

          讓我們創(chuàng)建一個(gè)按鈕:

          564208c1a832d9105789776a7f787372.webp

                <button id="recording-toggle">Start recording</button>
              

          JavaScript 代碼

                var RECORDING_ONGOING = false;
          var recordingToggle = document.getElementById("recording-toggle"); // The button

          recordingToggle.addEventListener("click", function(){
          RECORDING_ONGOING = !RECORDING_ONGOING; // Start / Stop recording
          if(RECORDING_ONGOING){
          recordingToggle.innerHTML = "Stop Recording";
          startRecording(); // Start the recording
          } else {
          recordingToggle.innerHTML = "Start Recording";
          stopRecording(); // Stop screen recording
          }
          });

          看起來這里似乎有很多內(nèi)容,但實(shí)際上,我們只是在按鈕上添加了一個(gè)事件監(jiān)聽器,以便啟動(dòng)和停止錄制,并相應(yīng)地更改文本。

          編寫錄制核心代碼

          在函數(shù)之前,聲明3個(gè)全局變量(在函數(shù)外部)。

                var blob, mediaRecorder = null;
          var chunks = [];

          現(xiàn)在,讓我們開始屏幕錄制。

                async function startRecording(){
          var stream = await navigator.mediaDevices.getDisplayMedia(
          {video: {mediaSource: "screen"}, audio: true}
          );

          deviceRecorder = new deviceRecorder(stream, {mimeType: "video/webm"});
          }

          我們從用戶的屏幕創(chuàng)建一個(gè)媒體流。媒體記錄器有一個(gè) mimeType,它是您所希望的輸出文件的類型。

          您可以在這里閱讀更多關(guān)于 mimeType 的信息。

          Edge 瀏覽器支持 video/webm mimeType。該文件擴(kuò)展名為 .webm。您可以使用以下方式檢查瀏覽器是否支持某個(gè) mimeType:

                console.log(MediaRecorder.isTypeSupported("video/webm"))
          console.log(MediaRecorder.isTypeSupported("video/mp4"))
          console.log(MediaRecorder.isTypeSupported("video/mp4;codecs=avc1"))

          在這篇文章中,我將使用 Webm,但您可以根據(jù)需要更改 mimeType。

          在 startRecording 函數(shù)中添加幾行代碼:

                    deviceRecorder.ondataavailable = (e) => {
          if(e.data.size > 0){
          chunks.push(e.data);
          }
          }
          deviceRecorder.onstop = () => {
          chunks = [];
          }
          deviceRecorder.start(250)

          每當(dāng)我們有數(shù)據(jù)時(shí),我們將其添加到之前定義的 chunks 數(shù)組中。當(dāng)我們停止錄制時(shí),我們將調(diào)用 stopRecording() 函數(shù)。

          停止錄制
                function stopRecording(){
          var filename = window.prompt("File name", "video"); // Ask the file name

          deviceRecorder.stop(); // Stopping the recording
          blob = new Blob(chunks, {type: "video/webm"})
          chunks = [] // Resetting the data chunks
          var dataDownloadUrl = URL.createObjectURL(blob);

          // Downloadin it onto the user's device
          let a = document.createElement('a')
          a.href = dataDownloadUrl;
          a.download = `${filename}.webm`
          a.click()

          URL.revokeObjectURL(dataDownloadUrl)
          }

          這就是在 JavaScript 中進(jìn)行屏幕錄制的簡單方法。如果您想要使用 mp4 或其他格式,您將需要使用 API 進(jìn)行轉(zhuǎn)換或自行處理。

          ca4d4795d802b72373be9bad40ca825d.webp

          結(jié)束

          在本文中,我們介紹了使用 JavaScript 進(jìn)行屏幕錄制的簡單方法。通過使用瀏覽器提供的媒體記錄器 API,我們可以輕松地捕捉用戶屏幕的內(nèi)容并創(chuàng)建錄屏文件。無論是進(jìn)行教學(xué)演示、演講稿錄制還是創(chuàng)建應(yīng)用程序演示視頻,屏幕錄制都是一個(gè)非常有用的工具。您可以根據(jù)需要選擇不同的輸出文件類型,并根據(jù)自己的需求進(jìn)行擴(kuò)展和定制。我希望本文對(duì)您理解和使用 JavaScript 的錄屏 API 有所幫助。

          謝謝您閱讀本文,如果您對(duì)其他 JavaScript API 和功能感興趣,請(qǐng)繼續(xù)關(guān)注我的系列文章。在接下來的文章中,我將繼續(xù)介紹更多有趣和實(shí)用的內(nèi)容,如通知、瀏覽器歷史記錄以及音頻和視頻錄制等。請(qǐng)留意我的更新,獲取最新的技術(shù)資訊和教程。

          希望您喜歡這篇文章,如果您有任何問題或意見,請(qǐng)隨時(shí)與我聯(lián)系。再次感謝您的閱讀!

          由于文章內(nèi)容篇幅有限,今天的內(nèi)容就分享到這里,文章結(jié)尾,我想提醒您,文章的創(chuàng)作不易,如果您喜歡我的分享,請(qǐng)別忘了點(diǎn)贊和轉(zhuǎn)發(fā),讓更多有需要的人看到。同時(shí),如果您想獲取更多前端技術(shù)的知識(shí),歡迎關(guān)注我,您的支持將是我分享最大的動(dòng)力。我會(huì)持續(xù)輸出更多內(nèi)容,敬請(qǐng)期待。

          瀏覽 66
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  探花爱爱视频网站 | 夜夜骚AV一二三区无码 | 日韩 中文 欧美 | 日女人精品视品在线观看 | 欧日成人网站 |