如何将音乐文件从 nodejs 流直播到 <audio> 标签?

问题描述

我正在开发一个网络广播网络应用程序,我希望用户直播音频文件。我的方法是从音乐文件创建一个可读流并写入 res 对象,如下所示。

在服务器上:


function delay(millis) {
    return new Promise(function(resolve) {
        setTimeout(resolve,millis);
    });
}


const express = require('express');

(async function() {

    const app = express();

    const writables = [];
    const readableStream = fs.createReadStream('music.mp3');

    readableStream.on('data',async function(chunk) {
        await delay(2711); // arbitrary delay
        writables.forEach(function(writable) {
            writable.write(chunk);
        });
    });

    app.get('/stream',async function(req,res) {
        writables.push(res);
    }

    await app.listen(8080);

})();

在浏览器上:

<audio src="http://localhost:8080/stream" autoplay></audio>

当我测试时,它不起作用。我开始深入研究这个问题,然后我发现问题是,只要发送到浏览器的数据不包含第一个块,它就不会播放。可能是因为文件块不是独立的什么的。

如何从文件中读取块,以便它们可以独立播放?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)