gpt4 book ai didi

video - 尝试在 Lambda 上使用 FFMpeg 层对视频进行转码

转载 作者:行者123 更新时间:2023-12-04 22:58:38 24 4
gpt4 key购买 nike

我正在尝试转换 .ogv文件到 .mp4使用 ffmpeg上层 AWS Lambda .

我关注了a tutorial from the people at Serverless Framework转换 .mp4GIF的,结果很好。使用相同的ffmpeg static build , ( ffmpeg-git-amd64-static.tar.xz ) 我开始转换 .ogv文件到 .mp4文件。

到目前为止,我已经成功地将视频上传到 S3 存储桶,让 Lambda 检索该视频,使用 ffmpeg 对视频执行某些操作二进制文件,并将新文件复制到 S3。

问题:

创建的视频将不会播放。

数据点 1:该函数生成的文件太小了。

输入视频文件1.3MB,输出视频只有256.0KB

数据点 2:未找到 moov 原子。

将生成的视频从 S3 复制到我的本地机器后,我尝试使用 ffplay 播放我收到这个错误:

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd613093400] moov atom not found
frank.mp4: Invalid data found when processing input

据我所知,moov atom 应该包含关于 .mp4 的重要元数据。文件。

执行:

我使用无服务器框架来设置 AWS 基础设施。

这里有几个不同的 ffmpeg我尝试过的命令:

第一次尝试:
  // convert to mp4!
spawnSync(
"/opt/ffmpeg/ffmpeg",
[
"-i",
`/tmp/${record.s3.object.key}`,
"-vcodec",
"libx264",
"-acodec",
"aac",
`/tmp/${record.s3.object.key}.mp4`
],
{ stdio: "inherit" }
);

第二次尝试:
 // convert to mp4!
spawnSync(
"/opt/ffmpeg/ffmpeg",
[
"-i",
`/tmp/${record.s3.object.key}`,
`/tmp/${record.s3.object.key}.mp4`
],
{ stdio: "inherit" }
);

第三次尝试:

我在 Stack Overflow question 中找到了这种方法海报说这对他有用。
// convert to mp4!
spawnSync(
"/opt/ffmpeg/ffmpeg",
[
'-i',
`/tmp/${record.s3.object.key}`,
'-codec:v',
'libx264',
'-profile:v',
'main',
'-preset',
'slow',
'-b:v',
'400k',
'-maxrate',
'400k',
'-bufsize',
'800k',
'-threads',
'0',
'-b:a',
'128k',
`/tmp/${record.s3.object.key}.mp4`
],
{ stdio: "inherit" }
);

这些作品中的每一个都在我的本地机器上膨胀。

如果我使用的 ffmpeg 二进制文件不是一个流行的二进制文件(我在多个与 Lambda 上的转码有关的网站上看到它),我的猜测是它是层的问题......也许。

任何见解将不胜感激。谢谢你。

最佳答案

这是一个涉及我的 Lambda 配置的简单且在我的情况下被忽略的修复。

错误

默认情况下,Lambda 有 6 秒的超时时间,之后它们会停止处理。

看来我的转码函数运行时间过长,并且 Lambda 在文件完成转码之前就被终止了。

修复

我将 Lambda 函数的超时设置为最长 15 分钟。完成此操作后,该过程按预期工作,视频被转码并能够播放。

关于video - 尝试在 Lambda 上使用 FFMpeg 层对视频进行转码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60536331/

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