1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Linux 2023 に ffmpegthumbnailer を install する

Posted at

全体の流れ

Amazon Linux 2023 (AL2023) にて ffmpegthumbnailer を使えるようにするまでハマったので残しておく。

  • ffmpegthumbnailerを使えるようにするまで
    • ffmpeg のソースからビルドとインストール
    • ffmpegthumbnailer のソースからビルドとインストール
  • 発展 デプロイ用にパッケージ化

1. ffmpeg のインストールとビルド

まずは ffmpeg のインストールとビルドを行う。
ffmpegthumbnailer のビルドにて必要になる。

必要なパッケージをインストール

$ sudo dnf install -y git nasm yasm make cmake gcc gcc-c++ libtool automake autoconf

ffmpegのソースコードをクローン

$ cd /usr/local/src
$ sudo git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

x264とx265のサポートを無効にしてffmpegをビルドおよびインストール

$ cd /usr/local/src/ffmpeg
$ sudo ./configure --prefix=/usr/local --enable-shared --enable-gpl --disable-libx264 --disable-libx265
$ sudo make
$ sudo make install

だいぶ時間がかかる。t3.mediumで20分くらい

2. ffmpegthumbnailer のインストールとビルド

次に、 ffmpegthumbnailer をソースからビルドしてインストールする。

必要なパッケージをインストール

$ sudo dnf install -y cmake libjpeg-devel libpng-devel glib2-devel

ffmpegthumbnailerのソースコードをクローン

$ cd /usr/local/src
$ sudo git clone https://github.com/dirkvdb/ffmpegthumbnailer.git

ビルド用ディレクトリの作成

$ cd /usr/local/src/ffmpegthumbnailer
$ sudo mkdir build
$ cd /usr/local/src/ffmpegthumbnailer/build

環境変数を設定

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
$ export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH
$ export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH

cmakeを使用してビルド

$ sudo cmake .. -DFFMPEG_ROOT=/usr/local -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PREFIX_PATH=/usr/local -DPKG_CONFIG_EXECUTABLE=/usr/bin/pkg-config
$ sudo make
$ sudo make install

ライブラリのコピーとシンボリックリンクの作成

$ sudo cp /usr/local/src/ffmpegthumbnailer/build/libffmpegthumbnailer.so.4.15.1 /usr/local/lib/

$ sudo ln -sf /usr/local/lib/libffmpegthumbnailer.so.4.15.1 /usr/local/lib/libffmpegthumbnailer.so.4
$ sudo ln -sf /usr/local/lib/libffmpegthumbnailer.so.4.15.1 /usr/local/lib/libffmpegthumbnailer.so

ライブラリキャッシュの更新

$ sudo ldconfig

インストール後の確認

$ ffmpegthumbnailer -v
ffmpegthumbnailer version: 2.2.2

恒久化

$ echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/custom-libs.conf
$ sudo ldconfig

発展

オートスケーリングでインスタンスの台数が変動するプロダクトでは、毎回makeをするのが辛い。時間がかかりすぎる。
ビルドした成果物をS3にアップロードして、インスタンスの初期セットアップ時はS3から成果物をダウンロードして展開することで短縮を図る。

S3にアップロード方法

ビルド成果物のアーカイブ

$ cd /usr/local
$ sudo tar -czvf ffmpeg_ffmpegthumbnailer_build.tar.gz \
    /usr/local/bin/ffmpeg \
    /usr/local/bin/ffmpegthumbnailer \
    /usr/local/lib/libav* \
    /usr/local/lib/libpost* \
    /usr/local/lib/libswresample* \
    /usr/local/lib/libswscale* \
    /usr/local/lib/libavutil* \
    /usr/local/lib/libffmpegthumbnailer* \
    /usr/local/lib64/libffmpegthumbnailer* \
    /usr/local/include/libav* \
    /usr/local/include/libffmpegthumbnailer* \
    /usr/local/lib/pkgconfig/libav* \
    /usr/local/lib64/pkgconfig/libffmpegthumbnailer* \
    /usr/local/share/man/man1/ffmpegthumbnailer.1

S3にアップロード

$ sudo aws s3 cp ffmpeg_ffmpegthumbnailer_build.tar.gz s3://your-bucket-name/path/to/ffmpeg_ffmpegthumbnailer_build.tar.gz

scpコマンドで1度ローカルに落としてからマネコンにて直接アップロードもアリ

S3からにダウンロードして使う方法

S3からダウンロード

$ cd /usr/local
$ sudo aws s3 cp s3://your-bucket-name/path/to/ffmpeg_ffmpegthumbnailer_build.tar.gz .

アーカイブを解凍してキャッシュ更新

$ sudo tar -xzvf ffmpeg_ffmpegthumbnailer_build.tar.gz
$ sudo ldconfig

おまけ Elastic Beanstalk 使用時の .ebextensions 設定ファイル

S3の成果物を利用する時

01_ffmpeg_ffmpegthumbnailer.config
container_commands:
  01_download_ffmpeg_ffmpegthumbnailer:
    command: |
      sudo mkdir -p /usr/local
      cd /usr/local
      sudo aws s3 cp s3://your-bucket-name/path/to/ffmpeg_ffmpegthumbnailer_build.tar.gz .
      sudo tar -xzvf ffmpeg_ffmpegthumbnailer_build.tar.gz -C /

  02_update_ldconfig:
    command: |
      echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/custom-libs.conf
      sudo ldconfig

毎回ビルド時(時間かかる)

01_ffmpeg_ffmpegthumbnailer.config
container_commands:
  01_build_ffmpeg:
    command: |
      sudo dnf install -y git nasm yasm make cmake gcc gcc-c++ libtool automake autoconf
      cd /usr/local/src
      sudo git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
      cd ffmpeg
      sudo ./configure --prefix=/usr/local --enable-shared --enable-gpl --disable-libx264 --disable-libx265
      sudo make
      sudo make install

  02_install_ffmpegthumbnailer_dependencies:
    command: sudo dnf install -y cmake libjpeg-devel libpng-devel glib2-devel

  03_build_ffmpegthumbnailer:
    command: |
      cd /usr/local/src
      sudo git clone https://github.com/dirkvdb/ffmpegthumbnailer.git
      cd ffmpegthumbnailer
      mkdir build
      cd build
      export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
      export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
      export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH
      export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH
      sudo cmake .. -DFFMPEG_ROOT=/usr/local -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PREFIX_PATH=/usr/local -DPKG_CONFIG_EXECUTABLE=/usr/bin/pkg-config
      sudo make
      sudo make install

  04_create_ffmpegthumbnailer_symlinks:
    command: |
      sudo cp /usr/local/src/ffmpegthumbnailer/build/libffmpegthumbnailer.so.4.15.1 /usr/local/lib/
      sudo ln -sf /usr/local/lib/libffmpegthumbnailer.so.4.15.1 /usr/local/lib/libffmpegthumbnailer.so.4
      sudo ln -sf /usr/local/lib/libffmpegthumbnailer.so.4.15.1 /usr/local/lib/libffmpegthumbnailer.so

  05_update_ldconfig:
    command: |
      echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/custom-libs.conf
      sudo ldconfig
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?