node.js - Nodejs - 如何将音频文件缓冲区数据流式传输到 nodejs 服务器
问题描述
我目前正在使用 React Native 构建一个录音应用程序,并使用 Express 作为服务器。我要做的是将音频文件流式传输到服务器,然后将其存储在 s3 存储桶中,同时还将链接发送回客户端。
目前我正在从一个帖子发送的缓冲区中获取块(见下文)。见下文。我试图首先创建一个 mp3 文件,这种情况正在发生,但是音频不是......也不是任何东西。
我的问题是:如何将数据流式传输到服务器然后创建音频文件?
谢谢你的帮助:
// 邮政
export const audioStream = async (chunkData) => {
console.log(chunkData);
try {
const data = await axiosAPI.post('/audio', {
chunkData
});
} catch (error) {
console.log(error)
}
};
// 服务器接收到的数据
{
chunkData: {
type: 'Buffer',
data: [
1, 0, 255, 255, 231, 255, 18, 0, 255, 255, 240, 255,
30, 0, 17, 0, 231, 255, 18, 0, 5, 0, 252, 255,
255, 255, 255, 255, 5, 0, 4, 0, 14, 0, 245, 255,
255, 255, 18, 0, 248, 255, 244, 255, 12, 0, 7, 0,
1, 0, 254, 255, 245, 255, 18, 0, 3, 0, 251, 255,
247, 255, 0, 0, 15, 0, 251, 255, 251, 255, 249, 255,
10, 0, 5, 0, 244, 255, 1, 0, 2, 0, 17, 0,
251, 255, 3, 0, 12, 0, 244, 255, 13, 0, 238, 255,
243, 255, 3, 0,
... 1948 more items
]
}
}
// 音频控制器
const fs = require('fs');
async function audioUploadStream(req, res) {
const myWriteStream = fs.createWriteStream(__dirname + '/testAudio.mp3');
myWriteStream.on("data", function (chunk) {
console.log("new chunk received");
myWriteStream.write(chunk);
});
return res.status(200).send({message: "streaming..."})
};
module.exports = {audioUploadStream}
// 音频路由器
const express = require("express");
const router = express.Router();
// Controller
const {audioUploadStream} = require('./../controllers/audioController');
// @route api/upload
// @desc Upload image
router.post("/", audioUploadStream);
module.exports = router;
解决方案
推荐阅读
- google-cloud-platform - Cloud Dataflow 作业未在 Cloud Dataflow 控制台信息中心中列出
- c# - 如何通过LINQ将层次结构树从父元素返回到所有子元素?
- python - 如何在 Python 中使用 if-else 语句选择字符串中的小写和大写字符?
- monit - 有没有办法通过 Monit 配置传递环境变量
- python - python 和 ehem 安装
- scala - 转换为 Map 和访问元素的简洁语法
- javascript - 机器人可以“点击”网页上的 JavaScript 链接吗?
- sql-server - 'CASE ... WHEN ... THEN' 语法中 THEN 之后的表达式
- c# - 是否有一种通用的方法来访问模式是动态的 JSON 数组中的对象内的字段?
- sql - 我应该如何命名我的 SQL 数据库中的列?