Google Cloud Functions 2代中ffprobe返回空错误对象的问题求助
问题:在Google Cloud Functions 2代中使用ffprobe获取GCS视频元数据失败
更新:经过进一步排查,发现有其他用户遇到相同问题的公开议题。
我在Google Cloud Function(2代)中尝试使用ffprobe获取存储在Google Cloud Storage存储桶中视频文件的元数据。据我了解,生成签名URL并直接传入ffprobe可以避免将整个视频文件加载到内存中。我生成签名URL后传入ffprobe,代码如下:
import ffmpeg from 'fluent-ffmpeg' import ffprobeStatic from 'ffprobe-static' async function getVideoData(srcFile: File) { const [signedUrl] = await srcFile.getSignedUrl({ action: 'read', expires: (new Date()).getMilliseconds() + 60_000, }) const videoData: ffmpeg.FfprobeData = await new Promise((resolve, reject) => { ffmpeg.setFfprobePath(ffprobeStatic.path) ffmpeg.ffprobe(signedUrl, (err, data) => { if (err) { reject(err) } else { resolve(data) } }) }) return videoData }
这段代码在本地macOS机器上(使用相同的签名URL)可以正常运行,但部署到2代Google Cloud Function后无法正常工作。在云端环境中,data为undefined,err为{}。
我的核心问题是如何在2代Google Cloud Functions中正确使用ffprobe。GCP上关于ffmpeg/ffprobe的文档十分匮乏,同时我也想弄清楚为何错误对象err为空,这对排查问题毫无帮助 😅
补充信息:
- 环境:Google Cloud Functions 2代
- 运行时:Node 20
- "ffprobe-static": "3.1.0"
- "fluent-ffmpeg": "2.1.2"
提前感谢各位的帮助。
内容的提问来源于stack exchange,提问作者willbattel
相关产品推荐
相关产品推荐

