我想使用node-fluent-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上的所有Q / A,但没有正确答案。
如何将命令行格式化为js代码?
谢谢!
答案 0 :(得分:8)
你现在可能已经想到了这一点,但无论如何我都会回答。
试试这个:
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之前的任何内容都被视为输入选项,输入和输出文件之间的任何内容都被视为输出选项。
你可以使用一组选项在一行中添加多个输入或输出选项,流畅的ffmpeg github也会指向一些javascript代码,作为其中一些命令的快捷方式,尽管我仍然觉得它更容易使用命令行语法。 https://github.com/fluent-ffmpeg/node-fluent-ffmpeg
如果你想要多个输出,你可以在你的例子中添加更多.output
(虽然你的命令行ffmpeg没有这样做)。