Node.js 流式视频片段在倒带时会丢失已下载的片段

Node.js 流式视频片段在倒带时会丢失已下载的片段,node.js,express,Node.js,Express,我已经设法以2mb的数据流传输视频,但我希望它在倒带时缓存(至少暂时缓存)已经下载的视频,但它开始从头开始下载。我可能会使用缓存npm包,但我认为一定有更好的方法 以下代码执行拆分和流式处理: 服务器端: app.get('/video', function (req, res) { const path = 'path_to_random_video.mp4' const stat = fs.statSync(path) const fileSize = stat.si

我已经设法以2mb的数据流传输视频,但我希望它在倒带时缓存(至少暂时缓存)已经下载的视频,但它开始从头开始下载。我可能会使用缓存npm包,但我认为一定有更好的方法

以下代码执行拆分和流式处理:

服务器端:

app.get('/video', function (req, res) {
    const path = 'path_to_random_video.mp4'
    const stat = fs.statSync(path)
    const fileSize = stat.size
    const range = req.headers.range

    if (range) {
        const parts = range.replace(/bytes=/, "").split("-")
        const start = parseInt(parts[0], 10)
        let end = parts[1]
            ? parseInt(parts[1], 10)
            : fileSize - 1

        if (start >= fileSize) {
            res.status(416).send('Requested range not satisfiable\n' + start + ' >= ' + fileSize);
            return
        }
        let chunksize = (end - start) + 1
        
        var maxChunk = 2048 * 1024; // 2MB at a time
        if (chunksize > maxChunk) {
            end = start + maxChunk - 1;
            chunksize = (end - start) + 1;
        }

        const file = fs.createReadStream(path, { start, end, autoClose: true })
        const header = {
            'Content-Range': `bytes ${start}-${end}/${fileSize}`,
            'Accept-Ranges': 'bytes',
            'Content-Length': chunksize,
            'Content-Type': 'video/mp4',
        }

        res.writeHead(206, header)
        file.pipe(res)
    }
}
客户端

<video id="videoPlayer" controls>
    <source src="/video" type="video/mp4">
</video>