【问题标题】:FFMPEG unexpected behavior inside nodejs Lambda functionnodejs Lambda函数中的FFMPEG意外行为
【发布时间】:2021-09-05 09:23:11
【问题描述】:

我正在尝试使用 FFMPEG 将字幕刻录到视频中。我在无服务器 lambda 架构中工作,我们之前通过使用层将 FFMPEG 与 lambda 结合使用,一切正常。 现在我正在尝试使用以下命令在视频中刻录字幕:

ffmpeg -i https://some-bucket.s3.region.amazonaws.com/my-video.mp4 -f mp4 -vf subtitles=sub.srt subtitled-video.mp4

问题是,该命令在我的本地机器或我尝试的任何其他实例中完美运行。但是在我的 lambda 函数中,我只得到没有字幕的原始视频。 起初我以为它可能是我正在使用的 ffmpeg 构建,但在尝试使用它之后,它在我尝试过的所有其他环境中都可以工作。

此外,我在 lambda 内的 ffmpeg 作业的输出中没有收到任何错误,一切似乎都正常。就是不烧字幕

我希望你能帮助我解决这个问题。或者至少为我指明正确的方向。

提前致谢

【问题讨论】:

  • sub.srt 文件存储在哪里?大概是在/tmp/ 目录下吧?尝试使用完整路径来引用文件。
  • @JohnRotenstein 感谢您的想法,实际上它位于 lambda 目录的根目录中,我尝试在 lambda 函数中运行命令 $cat sub.srt ,以验证路径是否正确,并且有效.此外,当我输入错误的子文件路径时,它会输出一个错误,表明 ffmpeg 找不到字幕文件

标签: node.js amazon-web-services ffmpeg aws-lambda aws-lambda-layers


【解决方案1】:

Lambda 会截断日志,您只能看到日志的结尾。如果日志中间有警告信息,您将看不到它。

我正在处理同样的问题,我发现的错误是没有字体。对于 EC2 实例和 Lambda 函数,如果您不提供字体,则不会像您的本地计算机那样提供系统字体。

如果没有字体,ffmpeg 命令将无法生成字幕。

我的解决办法是

  1. 将字体和字体配置添加到您的 Lambda 层

  2. 将环境变量 (FONTCONFIG_PATH) 添加到您的 lambda 函数,以便它知道在哪里可以找到字体。该值应该是您的字体所在的文件夹。就我而言,它是 /opt/fonts,因为这就是我捆绑 Lambda 层的方式。

  3. 为您的字幕规范添加强制样式

    subtitles=sample.srt:force_style="FontName=ArialUnicodeMS"

希望它能帮助你解决问题。

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    相关资源
    最近更新 更多