我当前的代码正常工作,看起来像
if (Number.isInteger(number)) {
ffmpeg(video.mp4)
.on('end', function () {
console.log('Screenshots taken');
})
.screenshots({
count: number,
folder: screenshotsOutput,
size: '1024x700'
})
} else {
ffmpeg(video.mp4)
.on('end', function () {
console.log('Screenshots taken');
})
.screenshots({
timestamps: number,
folder: screenshotsOutput,
size: '1024x700'
})
}
number可以是数组或整数。如果是数组,则应提供参数计数。如果是数组,则应在参数时间戳中使用。我的代码正在运行,但我想知道是否可以对其进行优化。我尝试了这个,但这不起作用:
ffmpeg(video.mp4)
.on('end', function () {
console.log('Screenshots taken');
})
.screenshots({
count: Number.isInteger(number) && number,
folder: screenshotsOutput,
size: '1024x700'
timestamps: Array.isArray(number) && number
})
是否也可以做这样的事情
除此之外,我想知道是否可以做这样的事情(我知道它不能像我写的那样工作)或者如果我想在命令中添加/删除一个选项,我应该重写整个命令< / p>
ffmpeg(video.mp4)
.on('end', function () {
console.log('Screenshots taken');
})
// Check if sccreenshots are needed
if (withScreenshots) {
.screenshots({
count: Number.isInteger(number) && number,
folder: screenshotsOutput,
size: '1024x700'
timestamps: Array.isArray(number) && number
})
}
答案 0 :(得分:0)
在第一个示例中,要缩短代码,可以在键表达式中使用三元/条件运算符:
{
key: value,
[expression]: value
}
所以对你而言,它是这样的:
{
key: value,
[condition ? "key1" : "key2"]: value
}
至于第二个例子,它也是可能的,但对你来说它没有用,因为你没有在任何事情上调用screenshots
方法。
您需要保存ffmpeg
的返回值以便稍后使用:
const thing = func(args)
.on("event", doStuff); // `.on` returns the event listener itself,
// that allows chaining calls to it
if(condition) thing.on("anotherEvent", doSomethingElse);
答案 1 :(得分:0)
这样的事可能对你有好处:
{
folder: screenshotsOutput,
size: '1024,700',
...(Number.isInteger(number)
? {count: number}
: Array.isArray(number) ? {timestamps: number} : {}
)
}