【问题标题】:Passing streams from Fluent-ffmpeg to Google Cloud Storage将流从 Fluent-ffmpeg 传递到 Google Cloud Storage
【发布时间】:2020-02-23 07:18:59
【问题描述】:

有没有办法将流从 Fluent-mmpeg 传递到 Google Cloud Storage?我正在尝试允许用户上传任何类型的媒体(音频或视频),并且我想在将其上传到 GCS 之前将其转换为 flac。

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


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】:

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

    类似这样的:

    // ConvertController
    req.ffpmegStream = ffmpeg(streamifier.createReadStream(req.file.buffer))
      .on('finish', next)
    
    // UploadController
    req.ffmpegStream.pipe(newFile.createWriteStream())
    

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 2021-04-25
      相关资源
      最近更新 更多