将流从Fluent-ffmpeg传递到Google Cloud Storage

问题描述 投票:1回答:1

是否可以将流从Fluent-mmpeg传递到Google Cloud Storage?我正在尝试允许用户上传任何类型的媒体(音频或视频),并且我想先将其转换为flac,然后再将其上传到GCS。

我在路线上使用了一些中间件,例如:


routes.post(
  '/upload',
  multer.single('audio'),
  ConvertController.convert,
  UploadController.upload,
  FileController.save,
  (req, res, next) => res.send('ok')
);

我能够从Multer流式传输到Fluent-mmpeg并使用ConvertController上的此代码保存到文件:

async convert(req, res, next) {
    ffmpeg(streamifier.createReadStream(req.file.buffer))
      .format('flac')
      .output('outputfile.flac')
      .audioChannels(1)
      .on('progress', function(progress) {
        console.log(progress);
      })
      .run();
  }

但是我想使用.pipe()将其传递给UploadController,然后再将其上传到GCS:

class UploadController {
  async upload(req, res, next) {
    const gcsHelpers = require('../helpers/google-cloud-storage');
    const { storage } = gcsHelpers;

    const DEFAULT_BUCKET_NAME = 'my-bucket-name';

    const bucketName = DEFAULT_BUCKET_NAME;
    const bucket = storage.bucket(bucketName);
    const fileName = `test.flac`;
    const newFile = bucket.file(fileName);

    newFile.createWriteStream({
      metadata: {
        contentType: file.mimetype
      }
    })

    file.on('error', err => {
      throw err;
    });

    file.on('finish', () => console.log('finished'));
  }

问题是我找不到任何地方可以解释如何将流向下传递到下一个中​​间件。

有可能吗?

node.js express ffmpeg google-cloud-storage fluent-ffmpeg
1个回答
0
投票

将ffmpeg流附加到req对象,然后可以使用next()将ffmpeg流传递到下一个中​​间件。然后,您可以将流传输到GCS文件。

类似这样的东西:

next()

参考:

© www.soinside.com 2019 - 2024. All rights reserved.