我有一个服务器,想要接收上传的视频,然后裁剪并完成将其上传到AWS s3
所以首先我要从multer
接收缓冲区,然后将其转换为流并将其传递给ffmpeg(找不到如何直接将缓冲区传递给ffmpeg),最后我将缓冲区返回给然后上传。
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
我不太了解错误