fc2ブログ

塩ログ〜/var/log/syolog〜

自分の知識の保存と共有のために

LinuxとIntensity ProでHD動画の視聴・録画

今回はIntensity proをLinuxで使うための備忘録を残す。
経緯としては、2011年の今頃に組んだPT2サーバが危篤疑惑になり、急遽BDレコーダーをメインに使う必要に迫られたので…。

下準備

Intensity proを買ってきて、パソコンに挿して、公式からドライバーを落として読み込むといういつもどおりの手順が必要。
挿せるパソコンについてはPCI-e入っていればx1でもx16でもOKなのでパーツ構成的な敷居は低い。
公式のドライバーはとりあえずここから最新のDesktop Videoを選べばいい。
名前とかいろいろ聞かれるけど、左下とか下の方にスクロールすると別に名前入れ無くてもダウンロード出来るのでビビらないこと。
ダウンロード後は以下のコマンドで解凍(Xubuntu 14.04 64bitでtmpディレクトリ下にダウンロードした場合)
tar xvf /tmp/Blackmagic_Desktop_Video_Linux_10.4.1.tar.gz
cd deb/amd64/
sudo dpkg -i desktopvideo_10.4.1a9_amd64.deb
sudo dpkg -i desktopvideo-gui_10.4.1a9_amd64.deb
sudo dpkg -i mediaexpress_3.4.1a2_amd64.deb 
ある日突然映らなくなったけど、調べたらドライバは定期的にアップしたほうがいいみたい…。

そして、gstreamerをインストールしておく。Intensity Proを動かすために必要なパッケージはgstreamer-plugins-badの中に入っている。badという名前ではあるが、質が悪いという意味ではなく、企業系のプロプライエタリ・ソフトウェアに対してはbadとかuglyとかつけるのがgstreamerの慣例であることに由来する模様。
ちなみに、0.10と1.0と無印の3種類あるが、今回はバージョン番号が一番大きい1.0を使用する。0.10と無印は同じものでffmpegベース、1.0はlibavベースであり、オプションが微妙に違う。

プレビュー表示

コマンドは以下の通り。(720p HDMI接続の場合)
gst-launch-1.0 decklinksrc connection=1 mode=17 audio-input=1 name=bmd \
bmd. ! videoconvert ! videoscale ! video/x-raw,height=540 ! queue ! xvimagesink sync=false \
bmd. ! audioconvert ! queue ! alsasink sync=false
プレビュー表示に関しては、モジュールが揃っていれば問題ないと思われる。
音量の大小については、pavucontrolコマンドとかで音量調整アプリで出来る。

録画

コマンドは以下の通り。(720p HDMI接続の場合)
#キャプチャ
gst-launch-1.0  decklinksrc connection=1 mode=17 audio-input=1 name=bmd \
bmd. ! videoconvert ! tee name=tv ! queue ! videoscale ! video/x-raw,height=360 ! deinterlace ! textoverlay text="●REC" valignment=top halignment=right color=0xFFFF0000 font-desc="40px" ! queue ! xvimagesink sync=false \
tv. ! queue ! videoconvert ! avenc_huffyuv ! queue ! avimux ! filesink location=/mnt/rd0disk0/video.avi \
bmd. ! audioconvert ! tee name=ta ! queue ! alsasink sync=false \
ta. ! queue ! audioconvert ! avimux ! filesink location=/mnt/rd0disk0/audio.avi

#エンコード
ffmpeg -i video.avi -libx264 -pix_fmt yuv420p video.mp4
ffmpeg -i audio.avi -libfaac audio.mp3
ffmpeg -i video.mp4 -i audio.mp3 -vcodec copy -acodec copy movie.mp4
録画は映像と音声を別口で取って、後で結合するのが一番確実。この辺はプレビュー表示と同じ要領。
このキャプチャコマンドではtee使ってプレビューしつつ、ファイルに落とすやり方をとっている。
目安として、このhuffyuvで録った動画データは30分で100GBくらい。いろいろ言われてるように録画専用のハードディスクをRAIDで用意するのが無難。
また、停止することを忘れないようにプレビュー画像にデカデカと文字出すようにしてる。

エンコードに関してはプリセットなり他のサイトなり参考にすればいいのでエンコードオプションについては、ここでは説明しない。
一応スマホで見れるようなもの作るとなると、とりあえず映像エンコードの際に"-pix_fmt yuv420p"というオプションをつけておかないとスマホでは見れない動画のままになる。

その他

HDMI対応キャプチャで公式にLinuxサポートしてて、会社も信頼性あるところなので、Linux使いならヘタなもの使うよりこれを選んでおくのが吉。
ただし、HDMIキャプチャする上で重要なHDCP解除はできないので、使う場合はごにょごにょする必要あり。

あと調べたら後継機であるIntensity pro 4Kなるものが今はあると聞く。
こちらは1080pはもちろん480pに対応しているという点は、ちょい古ハード(具体的にはPS2とかwiiとか)使うときに惹かれる要素だな。

参考サイト
https://gist.github.com/walkingeyerobot/7741362
http://d.hatena.ne.jp/t_tkms/20130730
http://d.hatena.ne.jp/naoina/20081219/1229694114
http://stackoverflow.com/questions/13364610/gstreamer-tee-multiple-multiplexer
http://d.hatena.ne.jp/fut_nis/20121106
スポンサーサイト