Intensity Pro 4K と Ubuntu 16.04 で IkaLog
概要
Intensity Pro 4K とUbuntu 16.04 LTS (amd64, Desktop)の組み合わせでIkaLogを動かすまでの手順です。
本家Wikiの↓の手順をベースにしています。
Intensity Pro 4K のドライバインストール
Blackmagic Designのサポートページ からドライバを入手します。 記事作成時点で最新の Desktop Video 10.6.4 を入れました。
必要なパッケージのインストール
$ sudo apt-get -y install build-essential cmake git \
libopencv-dev libgtk2.0-dev pkg-config \
python3-dev \
libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev \
libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev \
gstreamer1.0-plugins-bad \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev \
libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev \
libopencore-amrnb-dev libopencore-amrwb-dev \
libtheora-dev libvorbis-dev libxvidcore-dev \
python-pip python-virtualenv virtualenvwrapper \
libblas-dev libatlas-dev libatlas-base-dev
Intensity Pro 4K とりあえず対応版gst-plugins-badのインストール
GStreamerのdecklinkプラグインですが、元々入っているものだと画像が変にずれて上手くいかなかったので、パッチを書きました。githubに置いてあるので、落としてきてビルドします。Intensity Pro無印等ではたぶん不要だと思います。
$ sudo apt-get -y install autoconf autopoint libtool gtk-doc-tools libglib2.0-dev liborc-dev freeglut3-dev $ git clone --depth=1 -b 1.8.0-patch https://github.com/syptn/gst-plugins-bad.git $ cd gst-plugins-bad $ ./autogen.sh $ make -j 4 $ sudo make install
元から入っているプラグインよりも優先して使われるように、環境変数を設定します。~/.bashrc等に書いておきます。
export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-1.0
virtualenv作成
$ source .bashrc $ mkvirtualenv -p /usr/bin/python3.5 ikalog
pythonパッケージインストール
(ikalog)$ pip install Mako numpy protobuf MarkupSafe Pillow appdirs \
backports-abc chainer decorator filelock \
msgpack-python nose py pytest pytools \
six tornado umsgpack urllib3 certifi
ikalog用ディレクトリ作成
(ikalog)$ mkdir ~/ikalog (ikalog)$ cd ~/ikalog
opencvのインストール
(ikalog)$ git clone --depth 1 https://github.com/Itseez/opencv.git
(ikalog)$ git clone --depth 1 https://github.com/Itseez/opencv_contrib.git
(ikalog)$ cd opencv
(ikalog)$ mkdir build
(ikalog)$ cd build
(ikalog)$ cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_EXTRA_MODULES_PATH=~/ikalog/opencv_contrib/modules \
-D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF \
-D WITH_CUDA=ON -D BUILD_EXAMPLES=OFF ..
(ikalog)$ make -j 4
(ikalog)$ sudo make install
環境変数を設定します。~/.bashrc等に書いておきます。
export PYTHONPATH=/usr/local/lib/python3.5/site-packages:$PYTHONPATH
IkaLogのインストール
(ikalog)$ cd ~/ikalog (ikalog)$ git clone https://github.com/hasegaw/IkaLog.git
IkaLog設定
(ikalog)$ cd ~/ikalog/IkaLog (ikalog)$ cp IkaConfig.py.sample IkaConfig.py (ikalog)$ vi IkaConfig.py
INPUT部分を以下のように編集します。
INPUT_SOURCE = 'GStreamer'
INPUT_ARGS['GStreamer'] = {'source': 'decklinkvideosrc connection=hdmi mode=720p5994 device-number=0 ! videoparse width=1280 height=720 framerate=60000/1001 format=r210 ! videoconvert ! appsink'}
起動!
(ikalog)$ python IkaLog.py
その他
何回かに一回くらいon_lobby_matchingの取りこぼしが発生。とりあえずGStreamer側で↓のようにちょっとだけ暗くするフィルタをかけたら改善したような気がしますが、Intensity Pro 4Kに特有の現象かどうか調べたいところ…
INPUT_ARGS['GStreamer'] = {'source': 'decklinkvideosrc connection=hdmi mode=720p5994 device-number=0 ! videoparse width=1280 height=720 framerate=60000/1001 format=r210 ! videoconvert ! videobalance brightness=-0.01 ! appsink'}