gpt4 book ai didi

javascript - 使用 fluent-ffmpeg 将 ffprobe 元数据返回到另一个函数

转载 作者:行者123 更新时间:2023-12-04 23:11:21 26 4
gpt4 key购买 nike

我正在尝试使用 fluent-ffmpegffprobe获取文件的元数据并将其添加到列表中,但我想将获取元数据的过程与检查文件相关的方法分开,主要是因为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 ?

最佳答案

事实证明,对元数据的探测引入了竞争条件,因此我们应该构造代码,以便在回调之后流程继续:

const ffmpeg = require('fluent-ffmpeg')
var data
ffmpeg.ffprobe(file.name, (err, metadata) => {
if (!err) {
data = metadata
continueDoingStuff()
}
})

关于javascript - 使用 fluent-ffmpeg 将 ffprobe 元数据返回到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67280181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com