我想做一个自动视频生成的东西。目前我这样做的方式是使用editly节点库,它需要一个对象。现在我想从一个文件夹中获取音乐/音频,然后我想获取每个文件的持续时间,这样我就可以动态地将其剪辑在一起。
问题是我想返回一个对象到Array.map函数,该对象在回调中被编辑。但是当我返回对象(在我的脑海中应该被编辑)时,它返回默认值。
以下是我目前的代码:
var editly = require("editly");
var duration = require("mp3d");
var fs = require("fs");
var idx = 0;
var editObj = {
enableFfmpegLog: true,
outPath: "./vids/"+idx+".mp4",
width: 1280,
height: 720,
fps: 24,
defaults: {
transition: null
},
clips: [
{
layers: [
{
type: "image",
path: "./bgs/"+idx+".jpg"
}
]
}
],
audioTracks: fs.readdirSync("./audio/"+idx+"/").map((song, index, arr) => {
if(index == 0) {
var obj = { path: "./audio/"+idx+"/"+song, start: 0 };
return obj;
} else {
var obj = { path: "./audio/"+idx+"/"+song };
duration("./audio/"+idx+"/"+arr[index-1], (err, result) => {
obj.start = Number((result / 1000).toFixed(0));
});
return obj;
}
})
};
(async function() {
console.log(editObj);
// await editly(editObj).then(console.log).catch(console.error);
})();
更新:以下是新的工作代码:
var editly = require("editly");
var duration = require("mp3d");
var fs = require("fs");
(async function() {
var idx = 0;
var editObj = {
enableFfmpegLog: true,
outPath: "./vids/"+idx+".mp4",
width: 1280,
height: 720,
fps: 24,
defaults: {
transition: null
},
clips: [
{
layers: [
{
type: "image",
path: "./bgs/"+idx+".jpg"
}
]
}
],
audioTracks: await Promise.all(fs.readdirSync("./audio/"+idx+"/").map(async(song, index, arr) => {
if(index == 0) {
var obj = { path: "./audio/"+idx+"/"+song, start: 0 };
return obj;
} else {
var obj = { path: "./audio/"+idx+"/"+song };
await duration("./audio/"+idx+"/"+arr[index-1], (err, result) => {
obj.start = Number((result / 1000).toFixed(0));
});
return obj;
}
}))
};
console.log(editObj);
// await editly(editObj).then(console.log).catch(console.error);
})();
我相信发生的事情是在你的其他分支中,你在回调中变异了对象。在返回之前,它不会执行。因为js是异步的,所以您可能需要使用一个promise,并在返回之前等待突变的结果。
给定集合"foo",我们有字段"bar",看起来像这样: 如何查询字段“bar”上满足以下条件的所有“foo”:[14,18]中的“uid”=2和“mid”
复杂的画图函数利用2-D线性转换能让你画出任意图形。这个功能与Adobe? PostScript 语言实现的功能很相似,在X和Win32上,在画线段之前所有的转换顶点都是用整数表示,这就限制了画图的精确性。如果要画比较精确的图形,最好用OpenGL来画。 void fl_push_matrix() void fl_pop_matrix() 保存和恢复当前的转换,堆栈的最大深度为4 void fl
下面给出了问题陈述和解决方案。我无法理解解决方案背后的逻辑。 问题陈述: 给定一个数组包含n+1个整数,其中每个整数介于1和n之间,证明至少存在一个重复的数字。假设只有一个重复的数字,找到重复的一个。 首先,搜索空间是1到n之间的数字。每次我选择一个数字mid(它是中间的那个),并计算所有等于或小于mid的数字。如果计数大于mid,则搜索空间为[1 mid],否则为[mid+1n]。我这样做,直到
5.1.2 图形是复杂数据 图形编程就是编写能创建和处理图形的程序。从一般的意义上说,图形也是数据,只不过与数值、字符串、列表等类型的数据相比,图形数据是非常复杂的数据。 首先,一个图形包含的信息是复杂的。例如,一个圆形需要用一个圆心和一个半径来定义。半径可以用一个简单的数值来表示,但圆心(平面上的一个点)却需要用两个数值型坐 标组成的元组来表示。这还只是大家在平面几何里认识的圆形,在实际的图形应
主要内容:GWT 复杂组件 介绍,GWT 常用的复杂组件GWT 复杂组件 介绍 表单小部件允许用户与应用程序进行高级交互功能。每个 Complex 小部件都从 Widget 类继承属性,而 Widget 类又从 UIObject 继承属性。 小组件 描述 GWT UIObject类 此小部件包含文本,不会使用 <div> 元素将其解释为 HTML,从而使其以块布局显示。 GWT Widget类 此小部件可以包含 HTML 文本并使用 <div> 元素显
我写了一个函数来寻找目标值在给定数组中应该插入的位置。我们假设数组有不同的值,并按升序排序。我的解必须是O(log N)时间复杂度 此代码的复杂性是否为O(log N)?