【发布时间】:2021-07-20 15:02:11
【问题描述】:
我正在尝试使用fluent-ffmpeg的ffprobe来获取文件的元数据并将其添加到列表中,但我想将获取元数据的过程与与检查文件相关的方法分开,主要是因为addFileToList() 函数很长,而ffprobe 例程也很长。
我已经尝试了以下代码,但它没有给出我期望的结果:
export default {
// ...
methods: {
getVideoMetadata (file) {
const ffmpeg = require('fluent-ffmpeg')
ffmpeg.ffprobe(file.name, (err, metadata) => {
if (!err) {
console.log(metadata) // this shows the metadata just fine
return metadata
}
})
},
addFileToList (file) {
// file checking routines
console.log(this.getVideoMetadata(file)) // this returns null
item.metadata = this.getVideoMetadata(file)
// item saving routines
}
}
}
我已经尝试将getVideoMetadata() 例程嵌套在addFileToList() 中,它可以工作,但不是预期的那样,因为执行了这些操作,但不是第一次,只有第二次。这似乎是一个异步问题,但我不知道如何解决这个问题。
我能做什么?我应该坚持我的解耦getVideoMetadata() 的想法还是应该将它嵌套在addFileToList() 中并与async/await 角力?
【问题讨论】:
-
您找到解决 ffprobe 竞争条件问题的方法了吗?
标签: javascript ffmpeg fluent-ffmpeg