我有一个使用 ffmpeg 裁剪视频的 nodejs 应用程序
有时我会遇到错误,因为我试图从视频中裁剪出来,请参阅附件图像,其中黑色是视频,红色是裁剪区域。我的最终视频必须是正方形。
如果我用 0 替换负偏移量,最终结果将不是正方形。
我只需要在不存在的部分添加黑色背景
这是我的实际代码
const cropVideo = (buffer, width, height, x, y) => {
const inputFile = tmp.fileSync();
const outputFile = tmp.fileSync();
fs.writeFileSync(inputFile.name, buffer);
return new Promise((resolve, reject) => {
ffmpeg(inputFile.name)
.videoFilters(`crop=${width}:${height}:${x}:${y}`)
.format('mp4')
.on('error', reject)
.on('end', () => resolve(fs.readFileSync(outputFile.name)))
.save(outputFile.name);
})
}
最佳答案
我找到了一个创建工作偏移的解决方案
const cropVideo = (buffer, width, height, x, y) => {
const inputFile = tmp.fileSync();
const outputFile = tmp.fileSync();
fs.writeFileSync(inputFile.name, buffer);
const workOffset = 2000;
return new Promise((resolve, reject) => {
ffmpeg(inputFile.name)
.videoFilters(`pad=10000:10000:${workOffset}:${workOffset}`)
.videoFilters(`crop=${width}:${height}:${x + workOffset}:${y + workOffset}`)
.format('mp4')
.on('error', reject)
.on('end', () => resolve(fs.readFileSync(outputFile.name)))
.save(outputFile.name);
})
}
关于具有负偏移量的ffmpeg裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63372867/