如何解决ffmpeg作物与负偏移
我有一个nodejs应用程序,该应用程序使用ffmpeg裁剪视频
我有时会出现错误,因为我试图从视频中裁剪出来,请参阅附件图像,其中黑色是视频,红色是裁剪区域。我最后的视频必须是正方形。
如果我将负偏移量替换为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);
})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。