Raspberry Piで地デジ録画をやってみた事例はあるので、ではJetson TK1でやってみるか!と思って試してみました。基本的にはARMですし、プリインストールのOSがUbuntuベースであるのでそこまで難易度が高いわけではありません。
必要になるのが地デジチューナーです。ここではUSB接続の KTV-FSUSB2を使用しました。数年前に購入して、改造を施して押し入れに眠っていた物です。この改造についてはここでは触れません。
このドライバのソースをGitHubよりダウンロードしていきます。それとパッチもまた適用しておきます。
これらの手順についてこれから説明します。
ドライバの構築
GitHub(https://github.com/sh0/recfsusb2n)からダウンロードしてきました。
パッチについては、こちら(適当な何かの別館 recfsusb2n tsspliteer_lite内蔵・httpサーバー機能追加・recpt1ctl対応パッチ)。
ダウンロードしたらこれらをターゲット上へコピーしておきます。
$ unzip recfsusb2n-master.zip $ mv recfsusb2n-master recfsusb2n $ mkdir patch $ unzip recfsusb2n_http_patch2.zip -d patch $ cd patch $ cp Makefile ../recfsusb2n/src/ $ cp *.h ../recfsusb2n/src/ $ cp *.cpp ../recfsusb2n/src/
Makefileを開いて、boost_thread-mtの箇所を書き換える。
そして、#LIBSの行を有効化して、元々のLIBS行をコメントアウトします。
LIBS = -lpthread -lboost_system -lboost_thread -lboost_filesystem #LIBS = -lpthread -lboost_thread -lboost_filesystem
boostライブラリを取得してきます。
$ sudo apt-get install libboost-thread-dev libboost-filesystem-dev
ビルドします
$ cd recfsusb2n/src $ make
パーミッションルールの追加を行います
$ sudo gedit /lib/udev/rules.d/89-tuner.rules
ウィンドウが開いたら、以下のように中身を記述します。見やすいように改行を入れていますが、1行で書いてしまって下さい。
# FSUSB2N SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0511", ATTRS{idProduct}=="0029", MODE="0664", GROUP="video"
設定をリロードさせた後、念のため再起動します。ここではパワーオフまでです。
$ sudo udevadm control --reload-rules $ sudo poweroff
KTV-FSUSB2を取り付けて、電源を入れます。
起動したらターミナルから認識しているかどうかを確認してみます。
以下のようになったら認識できていると思います。
$ lsusb -d 0511: Bus 002 Device 005: ID 0511:0029 N'Able (DataBook) Technologies, Inc.
適当に録画してみる
$ cd recfsusb2n/src $ ./recfsusb2n -bv 27 30 test.ts
このtsファイルをWindows7側などに持ってきて、再生できるか確認してみます。
うまく動作していれば、そのままテレビ映像が表示されます
リアルタイム視聴してみる -NGでしたが-
VLCをインストールします。
$ sudo apt-get install vlc
インストール後、下記のようにコマンドを打ち込んでテレビ映像が表示されるか確認します。
$ ./recfsusb2n --b25 27 - - | vlc -
しかしながら、自分の環境では初期フレームは何か表示されるものの視聴できませんでした。
今回はパッチ当てて内蔵HTTPサーバー機能というものを取り込んでいるので、これで確認してみたいと思います。
$ ./recfsusb2n --b25 -v --http 8888
vlcを起動して、 http://localhost:8888/27/ を開いてしばらく待つと、ようやく再生が始まりました。
ただ非常に重く、CPUで全部デコード処理をやっているかのようです。
HWアクセラレータがデフォルトではOFF状態だったので、これらをONにしてみましたが変化せず。
ファイルキャッシュとして 300 だったものを10倍にしてみたところ多少はマシになったように思いますが視聴には耐えない感じ
$ sudo apt-get install vainfo $ vainfo
結果を確認してみると、DRIのドライバがないようでハードウェアアクセラレートが効かない模様。
だからリアルタイム視聴がうまくいかなかったのだと思います。
まとめ
現時点でのドライバの都合もあるので、録画そのものは出来るけど視聴はこのボードでは難しいようです。
消費電力を売りにして、録画だけ行うサーバーにするのはアリのようです。当初は、うまくいったらCUDAを使ってエフェクトをリアルタイムで適用しつつ録画を再生するなんてことを考えていましたが、現時点ではそれは夢となってしまいました。
また、ちゃんとした録画サーバーにするにはFoltiaだとか、epgrecだとかのシステムを入れる必要があると思いますが、それらについては未検証です。動くとは思いますが…。
折角のTegra K1搭載のボードなので、もうしばらくはグラフィックス寄りのプログラムを書いていじってみたいと思います。よって録画関連のテストはここまで!