This commit is contained in:
张成
2025-11-21 16:53:49 +08:00
commit 8309808835
286 changed files with 32656 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
const { plu_upgrade, op } = require("../../middleware/baseModel");
const { encoder } = require("../service/ffmpeg/encoder");
const fs = require('fs');
const stream = require("stream");
const path = require("path");
const getStreamContentTobase64Stream = async (file) => {
let p = new Promise((resolve, reject) => {
const readStream = fs.createReadStream(file.path)
const readStream2 = new stream.Readable();
let str = ''
readStream.on('data', data => {
str += data.toString()
})
readStream.on('end', () => {
let base64Array = str.split('data:image/png;base64,')
console.log('count', base64Array.length)
for (let i = 0; i < base64Array.length; i++) {
let base64 = base64Array[i].replace(/^data:\w+\/\w+;base64,/, '')
const buffer = Buffer.from(base64, "base64");
readStream2.push(buffer);
}
readStream2.push(null)
resolve(readStream2)
})
readStream.on('error', err => {
reject(err)
console.log(err)
})
})
return p
}
module.exports = {
"POST /video_effects/build": async (ctx, next) => {
const files = ctx.request.files; // 获取上传文件
let file = files.file
let frameStream = await getStreamContentTobase64Stream(file)
const output = await encoder({
silent: false,
frameStream: frameStream,
backgroundVideo: {
videoPath: path.join(__dirname, "../../config/media/demo_out.mp4"),
inSeconds: 1,
outSeconds: 30,
},
output: "output/test.mp4",
fps: {
input: 30,
output: 30,
},
});
console.log("process done,", output.path);
return ctx.success({ path: output.path });
},
};