gpt4 book ai didi

node.js - 给定特定大小时,node-fluent-ffmpeg 无法正确调整视频大小

转载 作者:行者123 更新时间:2023-12-04 22:59:01 27 4
gpt4 key购买 nike

版本信息

  • fluent-ffmpeg 版本:2.1.2
  • ffmpeg 版本:ffmpeg 版本 4.1.3
  • 操作系统:mac os x mojave 10.14.3

  • 重现代码

    首先使用以下命令剪切视频:

    const cutVideo = async (currentWord) => {
    return new Promise((resolve, reject) => {
    console.log('cutting video', currentWord.file)
    ffmpeg(currentWord.file)
    .videoCodec('libx264')
    // .addOptions('-vf "setdar=ratio=16/9:max=1000"')
    .on('start', command => console.log('command', command))
    .on('error', reject)
    .on('end', resolve)
    .withSize('640x360')
    .withAspect('16:9')
    .applyAutopadding(true, 'black')
    .saveToFile(currentWord.file.replace('-unfinished', ''), './')
    })
    }

    稍后使用 .mergeToFile() 将它们合并在一起命令:

    const mergeFilesAsync = async function(files, folder, filename)
    {
    return new Promise((resolve, reject) => {
    console.log('merging files', files)
    var cmd = ffmpeg({ logger: console })
    .videoCodec('libx264')
    .on('start', command => console.log('command', command))
    .on('error', reject)
    .on('end', resolve)

    for (var i = 0; i < files.length; i++)
    {
    const currentWord = files[i]
    cmd.input(currentWord.file.replace('-unfinished', ''))
    }

    cmd.mergeToFile(folder + "/" + filename, folder);
    });
    }

    预期成绩

    在 cutVideo 函数中调整大小的视频应具有 640x360 大小和 16:9 纵横比。

    观察结果

    第一个处理的视频尺寸为:850 × 480,处理后的输出为:642 × 360(应该是640x360)

    处理后的第二个视频尺寸为:1152 × 480,处理后的输出为:638 × 360

    处理的第三个视频尺寸为853 × 480,处理后的输出为:642 × 360

    fluent-ffmpeg 生成的 FFmpeg 命令:

    ffmpeg -i /Users/yagiz/Desktop/video-creator/what's-unfinished.mp4 -y -vcodec libx264 -filter:v scale=w='if(gt(a,1.7777777777777777),640,trunc(360*a/2)*2)':h='if(lt(a,1.7777777777777777),360,trunc(640/a/2)*2)',pad=w=640:h=360:x='if(gt(a,1.7777777777777777),0,(640-iw)/2)':y='if(lt(a,1.7777777777777777),0,(360-ih)/2)':color=black /Users/yagiz/Desktop/video-creator/what's.mp4
    cutting video /Users/yagiz/Desktop/video-creator/up?-unfinished.mp4



    ffmpeg -i /Users/yagiz/Desktop/video-creator/up?-unfinished.mp4 -y -vcodec libx264 -filter:v scale=w='if(gt(a,1.7777777777777777),640,trunc(360*a/2)*2)':h='if(lt(a,1.7777777777777777),360,trunc(640/a/2)*2)',pad=w=640:h=360:x='if(gt(a,1.7777777777777777),0,(640-iw)/2)':y='if(lt(a,1.7777777777777777),0,(360-ih)/2)':color=black /Users/yagiz/Desktop/video-creator/up?.mp4

    我认为这个命令中的 1.77777 值会产生实际项目的下限或上限。

    知道问题出在哪里吗?

    谢谢!

    最佳答案

    根据fluent-ffmpeg documentation ,当 size() 以固定的宽度和高度或百分比调用时,以及根本没有调用 size() 时,将忽略对 aspect() 的调用。

    关于node.js - 给定特定大小时,node-fluent-ffmpeg 无法正确调整视频大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55681781/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com