将命令行输入转换为节点Fluent ffmpeg

Translate Command Line Input to Node Fluent ffmpeg

本文关键字:节点 Fluent ffmpeg 转换 命令行 输入      更新时间:2023-09-26

我想使用nodefluent ffmpeg运行ffmpeg命令行(将png图像编译为视频):

ffmpeg -framerate 20 -i static/tmp/img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4  

我试了以下几项,但没有成功。

var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg()
    .addInputOption('-framerate 20')
    .addInputOption('static/tmp/img%03d.png')
    .addInputOption('-c:v libx264')
    .addInputOption('-r 30')
    .addInputOption('-pix_fmt yuv420p out.mp4')
    .output('outputfile.mp4')
    .output(stream);

我查看了github存储库和stackoverflow上的所有问答,但没有得到正确的答案。

如何将命令行格式化为js代码?

谢谢!

您现在可能已经明白了,但我还是会回答的。

试试这个:

var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg();
proc.addInput('static/tmp/img%03d.png')
.on('start', function(ffmpegCommand) {
    /// log something maybe
})
.on('progress', function(data) {
    /// do stuff with progress data if you want
})
.on('end', function() {
    /// encoding is complete, so callback or move on at this point
})
.on('error', function(error) {
    /// error handling
})
.addInputOption('-framerate 20')
.outputOptions(['-c:v libx264', '-r 30', '-pix_fmt yuv420p'])
.output('out.mp4')
.run();

基本上,-i之前的任何内容都被视为输入选项,输入和输出文件之间的任何内容也被视为输出选项。

您可以使用一组选项在一行中添加多个输入或输出选项,fluent ffmpeg github还会为您指出一些javascript代码,这些代码可以作为其中一些命令的快捷方式,尽管我仍然发现使用命令行语法更容易。https://github.com/fluent-ffmpeg/node-fluent-ffmpeg

如果您想要多个输出,您可以像示例中那样添加更多的.output(尽管您的命令行ffmpeg没有这样做)。