Потоковая передача ffmpeg в хранилище - PullRequest
0 голосов
/ 15 апреля 2019

При транскодировании записываемые потоки FFMPEG не имеют свойства перекодировать в хранилище.

FFMPEG разрешает потоки на выходе и на входе.При создании записываемых и читаемых потоков через хранилище gcp и применении их к FFMPEG выходные данные не содержат корректного транскодирования FLAC.

Это работает асинхронно, локально, при применении .output от входа в файловой системе.Но при применении к потокам без функции gcp результат перекодируется неправильно.

Триггеры поступают из входящего сегмента, а вывод - в другой сегмент

const ffmpeg = require("fluent-ffmpeg");
const ffmpegInstaller = require("@ffmpeg-installer/ffmpeg");
ffmpeg.setFfmpegPath(ffmpegInstaller.path);
const { audioBucket_3pg, audioBucket_flac} = require("./config.json");
const { Storage } = require("@google-cloud/storage");
const fs = require("fs");

/**
 * Triggered from a message on a Cloud Pub/Sub topic.
 *
 * @param {!Object} event Event payload and metadata.
 * @param {!Function} callback Callback function to signal completion.
 */
exports.transcode = (event, callback) => {
  try {
    const { name } = event.data;
    console.log("name", name)
    const flacName = name.replace(".3pg", ".FLAC");
    const storage = new Storage();
    const options = {
      gzip: true,
      metadata: {
        cacheControl: "public, max-age=31536000"
      }
    };
    const readFile = storage.bucket(audioBucket_3pg).file(name);
    const tempReadStream = fs.createReadStream('temp.flac')

    const writeFile = storage.bucket(audioBucket_flac).file(flacName);
    ffmpeg(readFile.createReadStream(options))
      .pipe(writeFile.createWriteStream(options))
      // tempReadStream.pipe()
    callback(console.log("finished"));
  } catch (err) {
    console.log("error", err);
  }
};

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