本文主要讲解读取本地mp3文件并播放的案例
- 1、fs是必不可少的文件模块
// 首先引入fs模块 const fs = require("fs")
- 2、使用fs读取本地媒体文件
let path = "d:\\music.mp3" // 创建流对象(方法的第一个参数是文件路径,第二个参数是流的配置,具体查看node.js文档) let rs = fs.createReadStream(path, { flags: "r", encoding: null, fd: null, autoClose: true, start: 0, })
- 3、监听流的读取
let chunks = [] // 创建存放数据块的数组,用以存放读取到的数据块,在后续进行消费 // 每当流将数据块的所有权移交给消费者时,则会触发 'data' 事件。 ws.on("data", (chunk) => chunks.push(chunks)) // 当所有的数据块读完后,触发end事件 ws.on("end", () => { // 在这里处理读取到的媒体流 // 将收集到的数据块进行base64处理 // 这就是媒体的数据,将其放至在audio/video标签的src属性即可播放 let bs = Buffer.concat(chunks).toString("base64") })
- 4、播放媒体
// 将获取到的base64媒体数据进行播放 // 这里演示音频的播放 let src= 'data:audio/mp3;base64,' + bs; let audio = new Audio(); audio.src = src; audio.load(); audio.play();
- 5、这里在介绍一个解析音频文件信息的库 node-id3
const NodeID3 = require("node-id3"); // path是音频文件的路径 NodeID3.read(path, (err, tags) => { if (err) { reject(); } console.log(tags) // 音频的信息 resolve(obj); });