Install ffmpeg on elastic beanstalk using ebextens

2019-02-01 14:26发布

I'm attempting to install an up to date version of ffmpeg on an elastic beanstalk instance on amazon servers. I've created my config file and added these 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

Command 01 and 03 seems to work perfectly but 02 doesn't seem to work so ffmpeg doesn't unzip. Any ideas what the issue might be?

Thanks, Helen

6条回答
干净又极端
2楼-- · 2019-02-01 14:35

You can use a static build from ffmpeg gusari and the sources syntax to automagically download and extract the binaries from a static build tar to /usr/local/bin. Here's an extremely simple example that has worked for me:

sources:
    /usr/local/bin: https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
查看更多
何必那么认真
3楼-- · 2019-02-01 14:37

add the following to your .ebextensions/packages.config

packages:
  yum:
    ImageMagick: []

sources:
  /usr/local/bin: http://ffmpeg.org/releases/ffmpeg-4.1.tar.gz
查看更多
Lonely孤独者°
4楼-- · 2019-02-01 14:40

A kind person at Amazon helped me out and sent me this config file that works, hopefully some other people will find this useful:

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"
  04-ln:
    command: "if [[ ! -f /usr/bin/ffmpeg ]] ; then ln -sf /opt/ffmpeg/ffmpeg-3.4-64bit-static/ffmpeg /usr/bin/ffmpeg; fi"
  05-ln:
    command: "if [[ ! -f /usr/bin/ffprobe ]] ; then ln -sf /opt/ffmpeg/ffmpeg-3.4-64bit-static/ffprobe /usr/bin/ffprobe; fi"
  06-pecl:
    command: "if [ `pecl list | grep imagick` ] ; then pecl install -f imagick; fi"

Edit: Changed the commands to install a "more official" static build linked from the FFMPEG web site. Also, the former static build from Gusari does not seem available anymore.

查看更多
干净又极端
5楼-- · 2019-02-01 14:51

Check cloud-init logs for messages. On a Linux instance, that would be:

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

Also, you can log to another file to make errors easier to find:

command: ln -s /usr/local/bin/ffmpeg /usr/bin/ffmpeg >> /var/log/my-init.log
查看更多
姐就是有狂的资本
6楼-- · 2019-02-01 14:54

The version is not specified in the first command "01-wget ..." however, it is specified when linking the files. Since the publication of this the release has been changed from "ffmpeg-3.3.1-64bit-static" to "ffmpeg-3.3.3-64bit-static" there are two solutions to fix this problem:

  1. specify the version for wget
  2. strip the containing directory on unpacking.

    03-tar: command: "tar xvf /tmp/ffmpeg.tar.xz -C /opt/ffmpeg --strip 1"

Here is the full script:

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"
查看更多
唯我独甜
7楼-- · 2019-02-01 14:55

Untested, but shouldn't it be

tar xzf /usr/local/bin/ffmpeg

without a minus?

查看更多
登录 后发表回答