网络录屏新体验:借助 Web API 接口实现便捷录屏的 HTML 源码

#介绍

网络录屏,即于互联网上实施屏幕录制的操作流程。其赋予用户通过网络连接来记录自身屏幕活动的能力,并且可在适当的时候对所录制的内容进行播放、分享或存储操作。在诸多场景中,像教育、培训、演示以及游戏等领域,网络录屏都发挥着重要的作用,它能够协助用户清晰展示操作步骤,解决相应问题,同时分享自己的宝贵经验。

一般情况下,网络录屏工具会为用户提供多种功能,像对录制区域的选取、添加音频注释以及调整录制质量等,以此充分满足用户各式各样的需求。

需要注意的是,此服务仅支持电脑访问,部分浏览器可能无法正常使用。

体验地址:https://123ka.cn/luping

#使用方法

新建一个html文件,把下方代码复制进去即可

#代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>屏幕录制示例</title>
  7. <style>
  8. body {
  9. font-family: Arial, sans-serif;
  10. text-align: center;
  11. padding: 20px;
  12. }
  13. h1 {
  14. margin-bottom: 20px;
  15. }
  16. #recordedVideoContainer {
  17. width: 640px; /* 固定播放器宽度 */
  18. margin: 0 auto; /* 水平居中 */
  19. }
  20. video {
  21. width: 100%;
  22. }
  23. button {
  24. margin: 10px;
  25. padding: 10px 20px;
  26. font-size: 16px;
  27. cursor: pointer;
  28. background-color: #4CAF50;
  29. color: white;
  30. border: none;
  31. border-radius: 5px;
  32. }
  33. input {
  34. padding: 8px;
  35. font-size: 16px;
  36. margin-bottom: 10px;
  37. border: 1px solid #ccc;
  38. border-radius: 5px;
  39. margin-right: 10px;
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <h1>屏幕录制示例</h1>
  45. <div id="recordedVideoContainer">
  46. <video id="recordedVideo" controls></video>
  47. </div>
  48. <div>
  49. <a style="display: none;">
  50. <input type="text" id="fileNameInput" placeholder="输入文件名">
  51. <a id="downloadLink" download="recorded-video.mp4" style="display: none;">
  52. <button id="downloadButton" onclick="downloadVideo()">下载视频</button>
  53. </a>
  54. </div>
  55. <div>
  56. <button id="startButton" onclick="startRecording()">开始录制</button>
  57. <button id="stopButton" onclick="stopRecording()" disabled>停止录制</button>
  58. </div>
  59. <script>
  60. let mediaRecorder;
  61. let recordedChunks = [];
  62. const recordedVideo = document.getElementById('recordedVideo');
  63. const startButton = document.getElementById('startButton');
  64. const stopButton = document.getElementById('stopButton');
  65. const downloadButton = document.getElementById('downloadButton');
  66. const downloadLink = document.getElementById('downloadLink');
  67. const fileNameInput = document.getElementById('fileNameInput');
  68. async function startRecording() {
  69. startButton.disabled = true;
  70. stopButton.disabled = false;
  71. downloadLink.style.display = 'none';
  72. const stream = await navigator.mediaDevices.getDisplayMedia({ video: true, audio: true });
  73. recordedChunks = [];
  74. mediaRecorder = new MediaRecorder(stream);
  75. mediaRecorder.ondataavailable = (e) => {
  76. if (e.data.size > 0) {
  77. recordedChunks.push(e.data);
  78. }
  79. };
  80. mediaRecorder.onstop = () => {
  81. const recordedBlob = new Blob(recordedChunks, { type: 'video/mp4' });
  82. recordedVideo.src = URL.createObjectURL(recordedBlob);
  83. downloadLink.href = recordedVideo.src;
  84. downloadButton.disabled = false;
  85. downloadLink.style.display = 'block';
  86. };
  87. mediaRecorder.start();
  88. }
  89. function stopRecording() {
  90. startButton.disabled = false;
  91. stopButton.disabled = true;
  92. mediaRecorder.stop();
  93. }
  94. function downloadVideo() {
  95. const fileName = fileNameInput.value || 'recorded-video';
  96. downloadLink.download = fileName + '.mp4';
  97. }
  98. </script>
  99. </body>
  100. </html>
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索