QNAPにffmpegをインストール

目的

QNAP(ARPプロセッサー)でffmpegを手動インストールしたメモです。

わざわざ手動で導入したのはCapturestream.rbを使いたいので。いや、本当はCapturestreamが目標なんですが、Capturestreamが目標というと何か怒られそうな気がしただけです。 QNAPのパッケージでもffmpegは入るのですが、Capturestreamを動かしてみると

ffmpegの実行でエラーが起こりました。パスの通った実行可能な場所にHTTP Live Streaming(HLS)に対応したffmpegがあることを確認してください。

となり、上手く動きませんので、HLSに対応するffmpegを手動で入れることにしました。ただHLSっていうのがよくわからないので、そのあたりは適当です。 この記事はffmpegのインストールとCapturestreamを動かすまでが書かれています。

参考にさせていただいたのは、こちら

なにか作ってみるよ。: QNAP x86ベースのNASにffmpegをインストールする

です。

注意

QNAP(ARM)のipkgでは解決できなかったので手動となりました。パッケージ管理外のインストールになるのでメモなどは残しておいた方が良いと思います。

必要なもの

開発環境とライブラリです。ffmpegコンパイルオプションによりますが、次のものが必要になりました。

開発環境
  • ipkg : これがないとダメです。
  • gccgccからpkgconfigまではipkgで導入できます。('ipkg install gcc' みたいな感じです。)
  • make
  • autoconf
  • coreutils
  • pkgconfig
ライブラリ関連
  • lane : 'ipkg install lane' で導入できます。
  • openssl : ffmpegコンパイルオプション'--enable-openssl' とrtmpdumpをインストールするのに必要です。デフォルトのopensslだとrtmpdumpがコンパイルできなかったので、手動で導入しました。
  • rtmpdump : ffmpegコンパイルオプション'--enable-librtmp' に必要です。これがないとCapturestreamが動きません。
  • faac : なんとなく。ffmpegコンパイルオプション'--enable-libfaac'に対応します。
  • x264 : これもなんとなく。ffmpegコンパイルオプション'--enable-x264'に対応します。

関連ライブラリのインストール

開発環境とlaneがインストールした後、のこりのライブラリを導入しました。

インストールの準備

インストールするライブラリは'/opt'にしました。configのPREFIXを'/opt'に統一する、ということです。 ipkgで導入しても、'/etc/ld.config'は書き換わらないので、'/opt/lib', '/opt/local/lib'を'/etc/ld.config'に追加して、'ldconfig'コマンドを打っておきます。

後で書きますが、QNAPの仕様で、ldconfigが起動のたびにデフォルトに戻ってしまうので、毎回ld.configを修正しなければいけません。

openssl

難しいことはなく

# ./configure --prefix=/opt
# make
# make install

で終わり。

rtmpdump

configがないので、makeをそのまま使うみたい。

# make SYS=posix prefix=/opt
# make install
libfaac

Android使いだし、あんまり要らないとおもうけど何となく入れました。 これは、普通に configure, make, make instal の王道パターン

# ./configure --prefix=/opt
# make
# make install
x264

とくに難しいことはないですが、yasmを入れていませんのでasmオプションは無効にします。そのほうがスムーズだっただけです。

# ./configure --prefix=/opt --disable-asm --enable-shared
# make
# make install

ffmpeg

ようやく本丸です。オプションだけ決まればそんなに難しくないです。ただ、(安いモデルなので)非力なCPUでコンパイルに時間がかかりました。 asm がdisableなのは、x264と同じくです。まぁ、ここまで来るまでが大変だったんですが。

# ./configure --prefix=/opt --disable-asm --enable-libmp3lame --enable-libx264 --enable-nonfree --enable-libfaac --enable-gpl --enable-openssl --enable-librtmp
# make
# make install

ここまで準備すればCapturestreamは動きます。faacはいらないかもしれませんけど。 はまりやすいのは、ldconfigですかね。staticにしちゃえばいいんでしょうけど、それはそれなりに大変なんですよね、たぶん。