使用 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的主要内容,如果未能解决你的问题,请参考以下文章
我应该在配置文件 (.ebextensions) 或保存的配置下放置弹性 beanstalk 选项吗?
AWS 弹性豆茎。仅在新实例上或手动执行 .ebextensions 命令
尝试通过弹性 beantalk 运行救援时忽略 .ebextensions 文件