MongoDB可以存储视频流,但需要使用GridFS来处理大文件的存储和检索。GridFS是MongoDB的一个特殊协议,用于将大文件分成小块并存储到集合中。以下是使用Node.js和Mongoose在MongoDB中存储视频流的示例代码:
const mongoose = require('mongoose');
const Grid = require('gridfs-stream');
// 连接数据库
mongoose.connect('mongodb://localhost:27017/myDatabase', { useNewUrlParser: true });
const conn = mongoose.connection;
conn.once('open', () => {
console.log('连接成功!');
const gfs = Grid(conn.db, mongoose.mongo);
// 创建写入流
const writeStream = gfs.createWriteStream({
filename: 'myVideo.mp4'
});
// 打开读取流
const readStream = fs.createReadStream('/path/to/myVideo.mp4');
// 将数据写入到数据库中
readStream.pipe(writeStream);
});
此代码创建了一个名为“ myVideo.mp4”的文件,并将其从本地路径写入MongoDB中的GridFS集合。要检索视频,请使用以下代码:
gfs.files.find({filename: 'myVideo.mp4'}).toArray((err, files) => {
if(!files || files.length === 0) {
return res.status(404).json({
message: '未找到该文件!'
})
}
const readStream = gfs.createReadStream({
_id: files[0]._id,
filename: files[0].filename
})
readStream.pipe(res); // 将视频发送给客户端浏览器
})
此代码检索名为“ myVideo.mp4”的文件并创建读取流,以将其发送到客户端浏览器进行查看。




