У меня есть сервер и я хочу получить загруженное видео, затем обрезать его и завершить sh загрузить его на aws s3
, поэтому сначала я получаю свой буфер от multer
, затем я Я преобразовываю его в поток и передаю его в ffmpeg (не могу найти, как напрямую передать буфер в ffmpeg) и в fini sh Я возвращаю буфер, чтобы затем загрузить его.
const ffmpeg = require('fluent-ffmpeg');
const streams = require('memory-streams');
cropVideo(buffer, width, height, x, y) {
const stream = new streams.WritableStream();
return new Promise((resolve, reject) => {
ffmpeg(new streams.ReadableStream(buffer))
.videoFilters(`crop=${width}:${height}:${x}:${y}`)
.format('mp4')
.on('progress', function (progress) {
console.log('Processing: ' + progress.percent + '% done');
})
.on('stderr', function(stderrLine) {
console.log('Stderr output: ' + stderrLine);
})
.on('error', err => console.log(err))
.on('end', () => resolve(stream.toBuffer()))
.pipe(stream)
})
}
Но это не работает по плану: D
Единственный выход, который у меня есть, это .on('stderr')
Stderr output: ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
Stderr output: built with Apple LLVM version 9.0.0 (clang-900.0.37)
Stderr output: configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
Stderr output: libavutil 55. 78.100 / 55. 78.100
Stderr output: libavcodec 57.107.100 / 57.107.100
Stderr output: libavformat 57. 83.100 / 57. 83.100
Stderr output: libavdevice 57. 10.100 / 57. 10.100
Stderr output: libavfilter 6.107.100 / 6.107.100
Stderr output: libavresample 3. 7. 0 / 3. 7. 0
Stderr output: libswscale 4. 8.100 / 4. 8.100
Stderr output: libswresample 2. 9.100 / 2. 9.100
Stderr output: libpostproc 54. 7.100 / 54. 7.100
Я не совсем понимаю ошибку