ffmpegをエックスサーバーで使用するにあたっての注意

Xserverの禁止事項にも記載してある通り、高負荷の処理は禁止されています。

また、エックスサーバーは共用サーバーなのでffmpegを使って高負荷をかけると他の利用者にも迷惑がかかってしまいます。最悪の場合、サーバーが停止することも考えられるため使用する際はかなり気をつける必要があります。

これはエックスサーバーだけに問わす他のレンタルサーバーにも言えることなので注意しましょう。
どうしても、Webサーバーでffmpegを使用したいまたは高負荷がかかる処理を行いたい場合はAWSのEC2やVPSを使用することをおすすめします。

ffmpegのバイナリーデータをダウンロードする

MacやWindowsは基本的にインストール処理を行う必要があったりしますが、実はファイルを設置するだけで実行できる形式のffmpegが存在します。
そのffmpegは以下のサイトからダウンロードすることができます。
https://ffbinaries.com/downloads
エックスサーバーはLinuxサーバーなのでlinux-64をダウンロードします。

必要に応じてffprobeも一緒にダウンロードするのも良いでしょう。

ffmpegをサーバーにアップロードする

先ほどダウンロードしたffmpegを以下のディレクトリにアップロードします。

/home/自分のサーバー名/.local/bin/

.localディレクトリがない場合は作成しましょう。

SSHでffmpegを使用できるように設定する

ffmpegをアップロードしたあとSSHで実行できるように権限を付与したりパスを通してあげる必要があります。

ffmpegに実行権限パーミッションを付与する

アップロードしたffmpegが実行できるように権限を設定します。
まずは、cdコマンドでアップロードしたffmpegのディレクトリまで移動します。

$ cd ~/.local/bin

次にchmodコマンドで実行権限を付与します。

$ chmod +x ffmpeg

ffmpegコマンドを叩いて実行できれば完了です。

$ ./ffmpeg
ffmpeg version 4.2.1-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

.bash_profileを編集してパスを通す

この作業は必要に応じて行うものになるので不要な方はスキップしても問題ありません。
.bash_profileに以下のようにパス設定を行います。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# 以下を記述する
PATH=$HOME/.local/bin:$HOME/bin:$PATH

export PATH

記述して保存した後は、bash_profileを再読み込みします。

$ source ~/.bash_profile

再読み込み後は`ffmpeg`コマンドを叩いて実行できれば無事成功です。

まとめ

エックスサーバーでは、yumでのインストールができないのでffmpegを使用できないように思われがちですが、バイナリファイルを設定することで使用できるようになります。

動画の長さやアスペクト比などメタデータの取得程度や動画から数枚の画像を抽出するなどの軽い処理であれば問題ないとは思いますが、冒頭でも記載しましたが動画変換などサーバーに著しい負荷を与えることはNGなので共用レンタルサーバーでの使用は十二分に注意して使用しましょう。