gpt4 book ai didi

node.js - 使用 NodeJS 在本地保存部分视频文件

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

我有一个部署在 AWS 上的无服务器 Web 应用程序我必须从上传到 S3 的视频中截屏.我正在使用 ffmpeg提取屏幕截图,但唯一的缺点是我必须先下载视频文件才能让 ffmpeg使用它。
知道我正在使用 AWS Lambda而且我对视频长度没有限制,用户可能会上传大文件,这使得 AWS Lambda达到存储限制。
为了克服这个问题,我想下载一小段视频并将其与 ffmpeg 一起使用。提取缩略图,所以使用 S3.getOjbect使用范围参数的方法我能够下载文件的一部分,但是 ffmpeg无法理解。
这是我的代码:

s3.getObject({
Bucket: bucketName,
Key: key,
Range: 'bytes=0-1048576'
}, (err, data) => {
fs.writeFile(fileName, data.Body, error => {
if (error)
console.log(error)
else
console.log('File saved');
})
})

以及提取缩略图的代码:
const ffmpeg = require('fluent-ffmpeg');
new ffmpeg(fileName).screenshots({
timestamps: [0],
filename: 'thumb.png',
folder: '.'
})

我从 ffmpeg 收到此错误
Error: ffmpeg exited with code 1: ./test.mp4: Invalid data found when processing input

我知道像这样保存文件存在问题,但我找不到任何解决我的问题的解决方案。如果有人有一个,将不胜感激。

更新:
原来 ffmpeg为我做这个,我只是给了它 url它下载了渲染屏幕截图所需的内容,而无需在本地下载文件,代码如下所示:
const ffmpeg = require('fluent-ffmpeg');
new ffmpeg(url).screenshots({
timestamps: [0],
filename: 'thumb.png',
folder: '.'
})

最佳答案

为此,您需要了解 mp4 的格式,并确保您获取了足够的数据以沿帧边界排列,然后更改任何标题,以便 ffmpeg 可以理解部分数据并且不认为它只有一个损坏的文件。

当您在 AWS 生态系统中时,您可以尝试使用 Elastic Transcode 对视频进行转码并要求它生成缩略图?

http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/preset-settings.html#preset-settings-thumbnails

关于node.js - 使用 NodeJS 在本地保存部分视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46911432/

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