Создание потока hls в облачных функциях Google (ffmpeg)
Я пытался в течение нескольких часов без хорошего результата.
Я хочу создать поток hls (из видео mp4) с помощью облачных функций Google.
Это то, что я придумал до сих пор:
const remoteReadStream = myBucket.file(vidPath).createReadStream();
const remoteWriteStream = myBucket.file(vidPath.replace('.mp4', '.m3u8')).createWriteStream();
var proc = ffmpeg()
.input(remoteReadStream)
// Base url
// include all the segments in the list
.addOption('-hls_time',4)
.addOption('-c:a aac')
.addOption('-ar 48000')
.addOption('-c:v h264')
.addOption('-profile:v main')
.addOption('-crf 20')
.addOption('-sc_threshold 0')
.addOption('-g 48')
.addOption('-keyint_min 48')
.addOption('-hls_playlist_type vod')
.addOption('-b:v 800k')
.addOption('-maxrate 856k')
.addOption('-bufsize 1200k')
.addOption('-b:a 96k')
.addOption('-hls_segment_filename', 'this_is_not_working_%03d.ts')
*tried gs://.../videos/$03d.ts' as well as other paths...
.outputOptions('-f hls')
.on('progress', function(progress) {
var processing_str = 'Processing:' + progress.percent + '% done';
console.log(processing_str);
})
.on('end', function() {
console.log('file has been ffmpeg succesfully');
})
.on('error', (err, stdout, stderr) => {
console.error('An error occured during encoding', err.message);
console.error('stdout:', stdout);
console.error('stderr:', stderr);
})
.pipe(remoteWriteStream, { end: true });
Это даст мне файл m3u8, но файлы заголовков (ts files) не будут созданы, из-за сбоя их сохранения. Файл m3u8 сохранен, потому что это поток.
Открытие "xxx.ts" для записи. Не удалось записать заголовок для выходного файла #0 (неверные параметры кодека?)
Я хочу сохранить их в той же папке, но не могу получить к ним доступ по корзине. Кто-нибудь знает, как "создать" несколько файлов (указать точный путь моего сегмента) в конфигурации ffmpeg?
Может быть, сохранение их в виде потока будет ответом, но я понятия не имею, как передать этот поток (.createWriteStream();) в качестве аргумента.
заранее спасибо