具有负偏移量的ffmpeg裁剪

标签 ffmpeg

我有一个使用 ffmpeg 裁剪视频的 nodejs 应用程序
有时我会遇到错误,因为我试图从视频中裁剪出来,请参阅附件图像,其中黑色是视频,红色是裁剪区域。我的最终视频必须是正方形。
enter image description here
如果我用 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/

相关文章:

swift - 在 Swift 中使用 FFmpeg 库

FFMPEG 不断增长的输入文件

PHP+FFMPEG 添加音乐到视频的替代方案?

video - 将 YUV420 帧编码为 VP9

ffmpeg - dxva2 硬件解码器支持哪些 h264 配置文件

video - ffmpeg 编辑元数据major_brand

opencv - 为什么我不能使用 FFMPEG 作为 OpenCV 的后端?

video - FFMPEG - 改变我的覆盖视频的饱和度

ffmpeg - 使用 FFMPEG 和 nvenc hevc 进行数学无损视频转换?

FFMPEG 忽略比特率