planet-green.com

MacPro2010にGeForce GTX 960を取り付ける



MacPro(2010年モデル)にGeForce GTX 960を取り付けました。
CUDAドライバーも認識されています。
取り付け手順や注意点は基本的に前回の記事と一緒です。

GeForce GTX 960をMacProに搭載
ちなみにELSAのGeForce GTX 960 2GB S.A.C SS GD960-2GERXSです。

GeForce GTX 960をMacProで認識

MacでCUDAドライバー

Final Cut Pro Xで4K動画の編集をする必要があったのですが、MacPro標準のグラフィックボード(ATI Radeon HD 5770)では重すぎてスムーズに編集できなかったのが、GTX960では何とか実用的なレベルになりました。
(とはいえ、ビデオエフェクトなどを多用すると重くなりますが。)

また、ffmpegをOpenCVを有効にしてインストールすると、エンコードの際にCUDAを利用するようで、CPU負荷が低くなってるのが確認できました。

OSのアップデートの度にビデオドライバーを入れ直さないといけないのは相変わらずで、画面が真っ黒になるので別のMacからリモート接続(『画面を共有』のこと)してインストールしてます。

コメント
planet-green.com

ffmpegのインストール及びavconvとの比較 (追記あり)



私が開発してるサービスで動画のエンコードが必要になった時の作業メモです。
ちなみにサーバー環境は Linux 64Bit(Ubuntu 12.04.3 LTS)、さくらサーバーのVPS。
(※Ubuntu16での変更点は追記に記載してます。)

ubuntuにパッケージで用意されているのはffmpegから派生したavconvだったので、当初はパッケージ版のavconv(v0.8.9)をインストールして動画をコンコードするプログラムを書いていました。
といいますか、ubuntuで apt-get install ffmpeg を実行するとffmpegではなくavconvがインストールされます。

ところが、いくつかのタイプの動画をテストでエンコードしてみてわかりましたが、このパッケージ版には不具合があります。
QuickTimeでエンコードされたmovファイル(動画コーディックはmp4)を再エンコードしようとすると Floating point exception というエラーが出て止まってしまいます。

既にプログラムはavconv用に書いていたので、気を取り直してソースから最新版のavconv(v0.9.10)をビルドしてみました。
すると、先ほどのmovファイルの再エンコードではエラーは出なくなりましたが、今度は別のwmvファイルを再エンコードしようとすると、

Application provided invalid, non monotonically increasing dts to muxer in stream 1: 13568 >= 13024
av_interleaved_write_frame(): Invalid argument

というエラーが出て止まります。

v0.8.9のソースからビルドすると、上記2つの動画は正常にエンコード出来るようになりましたが、古いバージョンを使うというのは気持ち的にあまり嬉しくありません。
そこでavconvは諦め、本家ffmpegに回帰することにしました。

ソースから ffmpeg v8.90 + libx264 + libvpx + FDK-AAC をビルドして、上記の二つの動画も問題なくエンコードできる事を確認。
オプションの挙動がavconvと若干異なっているのでプログラム側を微調整。

avconvは -movflags faststart に対応してないようでqt-faststartを後から実行する必要がありましたが、ffmpegではオプション一発で済むので楽ちんです。
また、動画フィルターとサイズ指定オプションの実行される順番なども異なってるようです。

以下、ffmpegをインストールした時の作業メモ。

【yasm】
ubuntuのyasmが1.1系でx264のビルドには1.2系が必要なので、先にインストール。
http://yasm.tortall.net/Download.html

./configure
make
make install

【FDK-AAC】
http://sourceforge.net/projects/opencore-amr/files/fdk-aac/

tar xzvf fdk-aac-0.1.*.tar.gz
cd fdk-aac-0.1.*
./configure --prefix=/usr/local
make
make install-strip

もし、 ./libtool: line 1125: g++: command not found の等エラーが出たら
apt-get install g++ でg++をインストール。

【libx264】
http://www.videolan.org/developers/x264.html

git clone git://git.videolan.org/x264
cd x264
./configure --prefix=/usr/local --enable-shared --enable-pic --extra-cflags=-fPIC --extra-ldflags=-fPIC --extra-rcflags=-fPIC --enable-strip
make
make install

【libvpx(WebM VP8/VP9 Codec SDK)】

git clone --depth 1 http://git.chromium.org/webm/libvpx.git (※下に追記あり)
cd libvpx
./configure --prefix=/usr/local --disable-examples
make
make install
ldconfig

【ffmpeg】

git clone git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg

./configure \
--prefix=/usr/local \
--libdir=/usr/local \
--shlibdir=/usr/local \
--incdir=/usr/local \
--mandir=/usr/local \
--arch=x86_64 \
--disable-debug \
--extra-cflags="-s -O3 -mtune=native -march=native" \
--enable-gpl \
--enable-nonfree \
--enable-libfdk-aac \
--enable-libvpx \
--enable-libx264
make
make install
ldconfig
  • 結局のことろ、本家公式サイトが一番参考になりました。
    https://trac.ffmpeg.org/wiki/UbuntuCompilationGuide
  • AACエンコーダーはNeroAACCodecが最も音質がいいらしいですが、ffmpegへは組み込めず外部プログラムを呼び出す形になるため、次点のFDK-AACでいいかなと。

#追記 2016/10/13

Ubuntu 16.04 LTS にインストールしてみました。
基本的には上記のままで大丈夫でした。
yasm は1.3系がパッケージに含まれているのでapt-getでいけます。

apt-get install yasm

libvpxのレポジトリが移転してました。

git clone https://chromium.googlesource.com/webm/libvpx

FDK-AACの高音質が欲しくてソースからビルドしてみましたが、そこまでこだわりが無ければ、Ubuntu16の標準パッケージで全然問題ないかも・・・。

コメント