2015年03月05日

リモートサーバーのffmpegを利用したい。

今、APサーバーとffmpegを共存させている。

APで元動画を受け付けて、ffmpegで変換って流れです。

で、ffmpegってそれなりにCPUが必要ですよね。thread オプションで調整はできるがスレッドが少ないと時間もその分かかる。

速度重視設定の場合、変換処理が重なった場合にAP側の機能への影響が怖い。。。

とういことで、変換専用のサーバーの構築です。

問題はAPで受け付けた元動画の共有と、APからリモートのFFMPEGの呼び出し。

考えてみた方法は以下:

1.動画の共有

FFMPEGサーバーのディスクをマウントし、APと共有する。
(どっちをどっちにマウントするかは設計次第で。FFMPEGが複数台なら、APのディスクをマウントしたほうがやりやすいでしょう。)

2.APからFFMPEGサーバーへコマンド発信

SSH経由で発行。sshpassでパスを省略。

参考:

コマンド発行方法
http://marucc.hatenablog.com/entry/20080206/1202301411
パスフレーズ省略
http://calcurio.com/wordpress/?p=1768

この2つの方法で実現してみる。

まずはAPサーバーにsshpassのインストール。

# tar -xzf sshpass.tar.gz
# cd sshpass-1.05
# ./configure
# make
# make install

# sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@FFMPEGサーバー

おー。パス入力なしでログインできた。

次にFFMPEGコマンドを送ってみる。FFMPEGサーバーに変換元動画を配置して

# echo ffmpeg -i Wildlife.wmv Wildlife.mp4 | sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@FFMPEGサーバー

おー!変換できた。これはいけそうですね。

次にマウント。お手軽にsshfsを利用します。

APサーバーにsshfsをインストール(※epelリポジトリの登録が必要かも。)

# yum install fuse-sshfs

APサーバーに/mnt/ffmpegを作って、FFMPEGサーバーの/home/userをマウントします。

# sshfs user@FFMPEGサーバー:/home/user /mnt/ffmpeg
# df -h

user@FFMPEGサーバー:/home/user
           405G 177G 208G 47% /mnt/ffmpeg


マウント完了。

これでひとまずの土台はできましたね。

他にも権限やら色々と問題起きそうですが、この方向性で進めてみます。

以上
posted by hana at 15:42| Comment(0) | TrackBack(0) | Linux関連 | このブログの読者になる | 更新情報をチェックする

ffmpegインストール。

ここにシンプルに手順がまとめられている。ありがたいことです。

http://d.hatena.ne.jp/kt_hiro/20150101/1420094609

ただ、この手順だけだと私の場合はFFMPEG実行時に、

ffmpeg: error while loading shared libraries: libx264.so.146: cannot open shared object file: No such file or directory

とかで怒られた。

# ldd `which ffmpeg`

linux-vdso.so.1 => (0x00007fffb05ff000)
    libx264.so.146 => not found
    libfdk-aac.so.0 => not found
    libm.so.6 => /lib64/libm.so.6 (0x00007f93bc82f000)

not foundになっている。。。。

自分でビルドしてインストールすると、デフォルトでは /usr/local/lib にライブラリが入るので、そこにパスを通してあげないといけない。

認識させる方法は、

/etc/ld.so.conf に、/usr/local/lib を追記するのが良いかと思う。

最初はインクルードさせようと、ld.so.conf.d/ 配下に適当なconfファイル作ったけどなぜか認識してくれなかった。

その後、

# ldconfig

で共有ライブラリの依存関係情報を更新することで無事にFFMPEGが実行できました。


以上です。
posted by hana at 10:43| Comment(0) | TrackBack(0) | Linux関連 | このブログの読者になる | 更新情報をチェックする