如何使用 MediaStream API 录制音频!

 037987bab1fea2d99eca0d2f6e5a412b.gif

新钛云服已为您服务1330

bba1f687f76d74c114270f6913a7a174.gif

Media Capture and Streams API(又名 MediaStream API)允许您从用户的麦克风录制音频,然后将录制的音频或媒体元素作为音轨获取。然后,您可以在录制后直接播放这些曲目,也可以将录制的媒体上传到您的服务器。

在本教程中,我们将创建一个网站,该网站将使用 Media Streams API 来允许用户录制某些内容,然后将录制的音频上传到服务器进行保存。用户还可以查看和播放所有上传的录音。

您可以在此 https://github.com/sitepoint-editors/mediastream-tutorial 仓库中找到本教程的完整代码。


准备一个服务器

我们将首先基于Node.js创建一个Express服务,如果您的机器上没有Node.js,请务必下载并安装它。


创建一个目录

建一个项目目录,然后切换到该目录下:

mkdir recording-tutorial
cd recording-tutorial

初始化项目

然后,用npm初始化项目:

npm init -y   //选项 -y 使用默认值创建 package.json

安装需要依赖的包

接下来,我们将为我们正在创建的服务器安装 Express 并借用nodemon让其支持热重启:

npm i express nodemon

创建一个express服务

我们现在可以从创建一个简单的服务器开始。在根目录中创建index.js并填写以下代码:

const path= require('path');
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.use(express.static('public/assets'));

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

创建一个服务器,当前环境中如果没有启用了3000端口的话它将在3000端口上运行,并且提供了一个静态资源目录public/assets--我们将很快创建它来保存JavaScript和CSS文件以及图片。


添加脚本

最后,在package.json中的scripts下添加一个启动脚本:

"scripts": {
  "start": "nodemon index.js"
},

启动web服务

让我们来测试下创建的服务器,运行以下命令启动服务器:

npm start

服务器应从3000端口监听,你可以尝试访问localhost:3000,但你会看到一个消息说:"Cannot GET /",这是因为我们没有定义任何路由。


创建一个录音的页面

接下来,我们将创建一个主页面,用户将使用此页面记录、查看和播放录音

在public目录中创建包含以下内容的index.html文件:

<!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>Record</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css"rel="stylesheet"
    integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
 <link href="/css/index.css" rel="stylesheet" />
</head>
<body class="pt-5">
  <div class="container">
    <h1 class="text-center">Record Your Voice</h1>
    <div class="record-button-container text-center mt-5">
      <buttonclass="bg-transparent border btn record-button rounded-circle shadow-sm text-center" id="recordButton">
        <img src="/images/microphone.png" alt="Record" class="img-fluid" />
      </button>
    </div>
  </div>
</body>
</html>

这个页面使用Bootstrap 5进行样式设置。目前,该页面只显示了一个用户可以用来录制的按钮。

请注意,我们正在使用图标为麦克风设计一个按钮, 你可以在Iconscout上下载图标,也可以使用GitHub存储库中的修改。

下载图标并将其放在public/assets/images中,名称为microphone.png。


添加样式

我们要引用样式表index.css,所以创建一个public/assets/css/index.css文件,内容如下。

.record-button {
  height: 8em;
  width: 8em;
  border-color: #f3f3f3!important;
}

.record-button:hover {
  box-shadow: 0 .5rem 1rem rgba(0,0,0,.15)!important;
}

创建路由

最后,我们只需要在index.js中添加新的路由。在app.listen之前添加以下内容:

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'public/index.html'));
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值