使用 ebextensions 配置在弹性 beantalk 上安装 ffmpeg

Posted

技术标签:

【中文标题】使用 ebextensions 配置在弹性 beantalk 上安装 ffmpeg【英文标题】:Install ffmpeg on elastic beanstalk using ebextensions config 【发布时间】:2014-06-13 23:32:20 【问题描述】:

我正在尝试在亚马逊服务器上的弹性 beanstalk 实例上安装最新版本的 ffmpeg。我已经创建了我的配置文件并添加了这些 container_commands:

    container_commands:
        01-ffmpeg:
            command: wget -O/usr/local/bin/ffmpeg http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.2014-03-05.tar.gz
            leader_only: false
        02-ffmpeg:
            command: tar -xzf /usr/local/bin/ffmpeg
            leader_only: false
        03-ffmpeg:
            command: ln -s /usr/local/bin/ffmpeg /usr/bin/ffmpeg
            leader_only: false

命令 01 和 03 似乎可以正常工作,但 02 似乎无法正常工作,因此 ffmpeg 无法解压缩。任何想法可能是什么问题?

谢谢, 海伦

【问题讨论】:

欢迎任何在 eb 实例上成功安装最新版本的 ffmpeg 和 imagick 的人提供任何帮助,无论是否与上述完全不同。 【参考方案1】:

亚马逊的一位好心人帮助了我并将这个配置文件发送给我,希望其他人会发现它有用:

# .ebextensions/packages.config
packages:
  yum:
    ImageMagick: []
    ImageMagick-devel: []
commands:
  01-wget:
    command: "wget -O /tmp/ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz"
  02-mkdir:
    command: "if [ ! -d /opt/ffmpeg ] ; then mkdir -p /opt/ffmpeg; fi"
  03-tar:
    command: "tar xvf /tmp/ffmpeg.tar.xz -C /opt/ffmpeg"
  04-ln:
    command: "if [[ ! -f /usr/bin/ffmpeg ]] ; then ln -sf /opt/ffmpeg/ffmpeg-4.2.2-amd64-static/ffmpeg /usr/bin/ffmpeg; fi"
  05-ln:
    command: "if [[ ! -f /usr/bin/ffprobe ]] ; then ln -sf /opt/ffmpeg/ffmpeg-4.2.2-amd64-static/ffprobe /usr/bin/ffprobe; fi"
  06-pecl:
    command: "if [ `pecl list | grep imagick` ] ; then pecl install -f imagick; fi"

编辑: 上面的代码适用于我今天 2020-01-03,在 Elastic Beanstalk 环境中 Python 3.6 running on 64bit Amazon Linux/2.9.17。https://johnvansickle.com/ffmpeg/ 链接自官方 ffmpeg site。 (Gusari 以前的静态构建似乎不再可用。)

警告: 以上将始终在您部署时下载最新版本。您还依赖于 johnvansickle 的站点在线(部署),并且他的 URL 不会改变。两种替代方法是:

将 .tar.xz 文件下载到您自己的 CDN,并让您的部署从您自己的站点下载。 (这样一来,如果 John 的站点在您部署时出现停机,您不会受到影响。而且您不会对 ffmpeg 版本在您不知情的情况下发生变化感到惊讶。) 指定版本号,如https://johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.2.2-amd64-static.tar.xz

【讨论】:

嗨,我在使用这个扩展安装 ffmpeg 时遇到了这个问题:任何帮助将不胜感激。 ` Yum 没有可用于安装的 commands-06-pecl。 EBExtension 中列出的软件包安装失败` 我能知道我们需要什么文件名和文件夹结构来写这些命令吗? 效果很好!只是小改动:command: "wget -O /tmp/ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/releases/ffmpeg-3.4.1-64bit-static.tar.xz" 使发布版本和目录名称对应。 你应该指定lib版本。 用官网代替johnvansickle那个人不是更好吗? ffmpeg.org/releases/ffmpeg-4.1.tar.gz【参考方案2】:

您可以使用来自ffmpeg gusari 的静态构建和sources 语法自动将二进制文件从静态构建tar 下载并解压缩到/usr/local/bin。这是一个对我有用的非常简单的示例:

sources:
    /usr/local/bin: https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz

【讨论】:

简单得多。谢谢! 我们一起懒惰! 好主意。不过,有一些注意事项。不幸的是,这种链接不是官方的,并且可能会过时。现在这个链接已经失效了。另一个问题是安全性,当没有官方支持时。请注意,官方 FFMPEG 网站确实提供了static builds,尽管来自第三方。问题是压缩格式是xz。 EB 仅接受 ZIP 和 TAR (gz)。 @SizzlingCode ffprobe 应该包含在静态构建中。 @vinay 谢谢!这样可行。顺便说一句,我现在决定自己编译,所以我可以获得 AAC 支持。【参考方案3】:

将以下内容添加到您的.ebextensions/packages.config

packages:
  yum:
    ImageMagick: []

sources:
  /usr/local/bin: http://ffmpeg.org/releases/ffmpeg-4.1.tar.gz

【讨论】:

【参考方案4】:

第一个命令“01-wget ...”中没有指定版本,但是在链接文件时指定了版本。自从发布此版本以来,该版本已从“ffmpeg-3.3.1-64bit-static”更改为“ffmpeg-3.3.3-64bit-static”,有两种解决方案可以解决此问题:

    指定 wget 的版本

    解压时剥离包含目录。

    03-焦油: 命令:“tar xvf /tmp/ffmpeg.tar.xz -C /opt/ffmpeg --strip 1”

这是完整的脚本:

packages:
  yum:
    ImageMagick: []
    ImageMagick-devel: []
commands:
  01-wget:
    command: "wget -O /tmp/ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz"
  02-mkdir:
    command: "if [ ! -d /opt/ffmpeg ] ; then mkdir -p /opt/ffmpeg; fi"
  03-tar:
    command: "tar xvf /tmp/ffmpeg.tar.xz -C /opt/ffmpeg --strip 1"
  04-ln:
    command: "if [[ ! -f /usr/bin/ffmpeg ]] ; then ln -s /opt/ffmpeg/ffmpeg /usr/bin/ffmpeg; fi"
  05-ln:
    command: "if [[ ! -f /usr/bin/ffprobe ]] ; then ln -s /opt/ffmpeg/ffprobe /usr/bin/ffprobe; fi"
  06-pecl:
    command: "if [ `pecl list | grep imagick` ] ; then pecl install -f imagick; fi"

【讨论】:

【参考方案5】:

检查 cloud-init 日志中的消息。在 Linux 实例上,这将是:

grep "03-ffmpeg" /var/log/eb-cfn-init.log

另外,您可以登录到另一个文件,以便更容易找到错误:

command: ln -s /usr/local/bin/ffmpeg /usr/bin/ffmpeg >> /var/log/my-init.log

【讨论】:

谢谢你,肯定有助于调试,但不幸的是仍然无法弄清楚。【参考方案6】:

未经测试,但不应该这样做

tar xzf /usr/local/bin/ffmpeg

没有减号?

【讨论】:

不幸的是,这似乎没有什么不同。不过感谢您的回复。

以上是关于使用 ebextensions 配置在弹性 beantalk 上安装 ffmpeg的主要内容,如果未能解决你的问题,请参考以下文章