2017年4月29日土曜日

Raspberry Pi 3Bで地デジを録画してみる

というわけで最近入手したRaspberry Pi 3BでKTV-FSUSB2を使ってみた。

Linuxではrecfsusb2nというアプリケーションを使用して録画したりできる。
前回LinkStationにrecfsusb2を入れて録画してみたときよりも進化していて、有志により機能追加やバグ修正も行われているみたい。

今回はhttpサーバ、tssplitter_lite内蔵、放送休止時の無限ループバグ修正などなどが入っている、STZ版を使用してみた。というのもオリジナルにrecfsusb2n_http_patch2.zipパッチを当てる手法だとMakefileを結構いじらないとコンパイルできなかったので…
どっちも機能的には同じでSTZ版のほうが簡単だし、コンパイル時の警告も少なかったので。

まずはラズパイをアップデートして必要なライブラリをインストール
sudo apt-get update
sudo apt-get install git libboost-thread-dev libboost-filesystem-dev
そんでもってrecfsusb2nのSTZ版をgitからダウンロードしてmake
git clone https://github.com/stz2012/recfsusb2n
cd recfsusb2n
make
sudo make install
STZ版はmake installするとチューナーデバイスへのアクセス権も付与してくれるので便利だ…
ただしsudo make installしてからチューナーのUSB抜き差し必要あるかも?
recfsusb2n --b25 --sid hd 16 10 rec.ts
あとは録画してみる。16chを10秒録画。
と思ったら"GetSequenceState timeout."で録画できず…
どうやらこのままのソースではCATVパススルーには対応していないらしい?

ということでfsusb2n.cppの250行目と523行目あたりのSetFrequencyのところをCATV対応にしてみた。
// 周波数を計算 (UHF13ch = 473143 kHz)
//pDev->SetFrequency( (args.channel * 6000) + 395143 );
if(13 <= args.channel && args.channel <= 21) {
	pDev->SetFrequency( ( (args.channel - 13) * 6000 ) + 111143 );
}else if(args.channel == 22) {
	pDev->SetFrequency( ( (args.channel - 22) * 6000 ) + 167143 );
}else if(23 <= args.channel && args.channel <= 63) {
	pDev->SetFrequency( ( (args.channel - 23) * 6000 ) + 225143 );
}
pDev->InitDeMod();
pDev->ResetDeMod();
こんな感じになるように修正してみた。(SetFrequencyがある2箇所とも。)
これでもう一回makeしてsudo make installしたらCATVパススルーでテレビが受信できるようになった。ちなみにCATVとBS/CSが混波されてるんだけどこの環境だと分波器を取り付けないと一部映らないチャンネルがあった…BS/CSも混波されてる環境で電波強度が悪い場合は分波器を試すといいかも?

予約録画ができるツールは色々あるみたいだけどepgrec UNAあたりを試してみようかなぁ

ラズパイのmpeg2のデコーダーライセンスを購入すればリアルタイムでハードウェアデコードで視聴できちゃうのかなぁ?

0 件のコメント:

コメントを投稿