Google Chrome не буферизует аудио - PullRequest
0 голосов
/ 10 ноября 2018

Я передаю аудио, извлеченное из корзины Gridfs, на html-аудио элемент клиента через экспресс-сервер по частям, когда они становятся доступными. Edge и Firefox загружают и буферизируют песню и позволяют мне искать буферизованную песню, в то время как chrome, похоже, не буферизует ее, а загружает фрагменты последовательно (я, вероятно, ошибаюсь).

Сторона сервера:

trackRoute.get('/:trackID', (req, res) => {
    try{
        var trackID = new ObjectID(req.params.trackID);
    }
    catch(err){
        return res.status(400).json({ message:" :Invalid trackID in URL parameter. Must be a single String of 12 bytes or a string of 24 hex characters" });
    }

    res.set('content-type', 'audio/mp3');
    res.set('accept-ranges', 'bytes');
    res.set('Transfer-Encoding', 'chunked');

    let bucket = new mongodb.GridFSBucket(db,
        {
            bucketName: 'songs'
        }
    );

    let downloadStream = bucket.openDownloadStream(trackID);

    // downloadStream.pipe(res);

    downloadStream.on('data', (chunk) => {
        res.write(chunk);
    });

    downloadStream.on('error', (err) => {
        res.sendStatus(404);
    });

    downloadStream.on('end', () => {
        res.end();
    });

    // let readableSongStream = fs.createReadStream("C:\\Users\\Sajeel\\Music\\Demons - Imagine Dragons.mp3");
    // readableSongStream.pipe(res);
});

СЕТИ СЕТЕЙ


Chrome:

Занимает 2,3 минуты и все еще не позволяет мне искать песню, пока вся песня не будет проиграна

Firefox:

131ms

Край:

1.09s

...