gpt4 book ai didi

node.js - fluent-ffmpeg 生成不正确的帧率

转载 作者:行者123 更新时间:2023-12-04 23:00:47 24 4
gpt4 key购买 nike

我在将图像转换为视频时遇到了一个奇怪的问题。我正在使用 excellent fluent-ffmpeg module对于 node.js 服务器。我有 179 张 jpg 图像,我希望将其转换为 30fps 的视频(应该是 6 秒左右)。我已经使用以下 ffmpeg 命令成功地做到了这一点:

ffmpeg -r 30 -i frame%03d.jpg -c:v libx264 out.mp4

ffmpeg 检查时会输出以下内容:
ffmpeg -i out.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf54.63.104
Duration: 00:00:06.00, start: 0.000000, bitrate: 1631 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p, 640x480 [SAR 1:1 DAR 4:3], 1627 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
Metadata:
handler_name : VideoHandler

现在,我正在尝试用 fluent-ffmpeg 做同样的事情:
var proc = new ffmpeg({ source: 'frame%03d.jpg', nolog: true })
.addOptions(['-c:v libx264','-r 30'])
.saveToFile('test.mp4', function(retcode, error){
console.log('file has been converted succesfully');
});

应该完全一样吧?但这是我得到的:
ffmpeg -i test.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf54.63.104
Duration: 00:00:07.20, start: 0.000000, bitrate: 1556 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p, 640x480 [SAR 1:1 DAR 4:3], 1553 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
Metadata:
handler_name : VideoHandler

现在最有趣的是,虽然两者都是由同一组图像制作的,并且都具有相同的帧速率,但使用 fluent-ffmpeg 制作的图像的持续时间为 7.20 秒,比第一个长了整整 1.20 秒。比较这两个视频后,虽然 fluent-ffmpeg 报告了 30,但它似乎实际上是 25fps。

请注意,我已经尝试使用方法( .withVideoCodec, .withFps)正确添加两个标志,结果相同,我只是求助于手动添加参数以使其与我的原始命令完全相同。

如果这里有人对此模块有经验和/或有任何建议,将不胜感激!

最佳答案

遇到了同样的问题,发现你需要指定 Input FPS 来匹配你的图像序列源。

.withFpsInput(30) // fps matching your jpg or png input sequence

这对我很有用。希望能帮助到你!

关于node.js - fluent-ffmpeg 生成不正确的帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212021/

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