При транскодировании записываемые потоки 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);
}
};