файл транскодирования в облачной функции сохраняет только один фрагмент и запускает событие завершения - PullRequest
0 голосов
/ 03 ноября 2019

Я написал эту облачную функцию, которая транскодирует файл MOV в MP4, но после запуска функции я вижу только сохраненное видео размером 1,3 КБ или около того, но все работает гладко, не зная, что происходит. Я не вижу никаких ошибок, генерируемых в консоли, но я уверен, что я делаю что-то не так в коде, ниже приведена функция:

const storage = require('@google-cloud/storage')();
const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;
const ffmpeg = require('fluent-ffmpeg');

ffmpeg.setFfmpegPath(ffmpegPath);

exports.vsTranscodeVideo = (req, res) => {

const fileName = req.body.filename;
const userBucket = storage.bucket(req.body.vsuserbucket);
const uploadBucket = storage.bucket(req.body.vstempbucket);

const remoteWriteStream = userBucket.file(fileName.replace('.mov', '.mp4'))
.createWriteStream({
    metadata: {
        contentLanguage: 'en',
        contentType: 'video/mp4'
    }
  });

const remoteReadStream = uploadBucket.file(fileName).createReadStream();

// Transcode
ffmpeg()
  .input(remoteReadStream)
  .outputOptions('-c:v copy') // Change these options to whatever suits your needs
  .outputOptions('-c:a aac')
  .outputOptions('-b:a 160k')
  .outputOptions('-f mp4')
  .outputOptions('-preset fast')
  .outputOptions('-movflags frag_keyframe+empty_moov')
  .outputFormat('mp4')
  //https://github.com/fluent-ffmpeg/node-fluent-ffmpeg/issues/346#issuecomment-67299526 // end: true, emit end event when readable stream ends
  .on('start', (cmdLine) => {
    console.log('Started ffmpeg with command:', cmdLine);
  })
  .on('end', () => {
    //uploadBucket.file(fileName).delete();
    console.log('Successfully re-encoded video.');
    res.status(200).send("success");
  })
  .on('error', (err, stdout, stderr) => {
    console.error('stdout:', stdout);
    console.error('stderr:', stderr);
    res.status(200).send(err.message);
  })
  .pipe(remoteWriteStream, { end: true });
};

Есть ли что-то, что я делаю неправильно? Любая помощь высоко ценится. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...