我正在使用 MEAN 堆栈创建音乐流媒体服务。到目前为止,我已经编写了使用 GridFS 将 mp3 文件上传到我的 MongoDB 数据库的代码,我还可以将该文件下载到我网站的根文件夹中。
但是,我不希望下载流写入文件,而是流式传输到播放器/扬声器,以便文件不在用户系统上,只是从服务器流式传输。
我一直在查看 npm 扬声器模块,并尝试按如下方式实现它:
var assert = require('assert');
var fs = require('fs');
var mongodb = require('mongodb');
var Speaker = require('speaker');
var uri = 'mongodb://localhost:27017/test';
var speaker = new Speaker({
channels: 2, // 2 channels
bitDepth: 16, // 16-bit samples
sampleRate: 44100 // 44,100 Hz sample rate
});
mongodb.MongoClient.connect(uri, function(error, db) {
assert.ifError(error);
var bucket = new mongodb.GridFSBucket(db, {
chunkSizeBytes: 1024,
bucketName: 'songs'
});
bucket.openDownloadStreamByName('testmp3.mp3').pipe(speaker)
});
我不确定是否需要实现一个缓冲区来执行此操作。据我所知,npm 扬声器模块是一个可写流,因此我应该能够通过管道传输到它。
我上面的解决方案会产生大约 30 秒的静态噪音,然后退出并出现“进程以退出代码 132 完成(被信号 4 中断:SIGILL)”错误。
我是 NodeJS 等的新手,所以对此的任何帮助将不胜感激。
谢谢