先日、放置していたエンコード専用にしているpcをwindowsアップデートしたら、3.5ギガ消費した。
契約しているmvnoの通信量の上限は7ギガ。
月が変ってまだ2日目...。

ようやく、常用しているkodiのバージョンをMatrixにした。
日頃使うのはラズパイ3なのだが、どうもv19とは相性が良くなかったのだ。
しかし、その原因も解決。
しばらく使ってみたが問題無し。
安定していることが確認できたので、v19へお引っ越し。

前回はゲームアドオンをセットアップ。
そして残るはラジオのアドオン。

さて、ラジオと言ってもネットストリーミングではない。
sdrラジオである。
ワンセグTVチューナーを用い、受信信号をソフトウェア処理してラジオ化するもの。
何故、この時代にそんなアナログを地で行くものを使うのか?

上記通り、自宅ネット環境はmvnoのテザリングが全て。
貴重なリソースを、ラジオ如きで消費できないと言う訳である。

ちなみに、使用しているTV/RADIOチューナ受信機はネットで良く見掛ける「青いヤツ」。


しかし、これ。
同じように見えてネット通販で調べると値段はバラバラ。
一番安いのを買っとけ!...は危険である。
外見をコピーするのは簡単。
安いなりに、中身も格安のパーツが使われているに違いない。

ちなみに、自身はアマゾンで2番目に安いものを購入したのだが...。

とにかく、v19でセッティングしてみる。
知る限りkodiでsdrラジオを使用するための選択肢は3通り。

1.FMストリーミングサーバー(rtl_fm_streamer等)を使用する。
2.アドオンpvr.rtl.radiofmを使用する。
3.アドオンpvr.rtlradioを使用する。

1.rtl_fm_streamer
長所して、TVサーバー等にデバイスを設置しておけば複数のクライアントへ配信できる。
短所としてkodiのpvrインターフェースを使用するには、別途pvr.iptvsimpleが必要になる。
各局の情報をm3uファイルに記せば使える。
又、手間を掛けたくなければ各局毎にstrmファイルを用意して選曲すれば良い。

2.pvr.rtl.radiofm
kodiのpvrアドオンとして使用するもの。
特徴としては、guiを用いて各局の周波数を変更することが出来る。
ただ、出力の細かな設定はできない。
そのままの出力設定ではcpuに負荷が掛り、使い続けるには問題がある。
当然、その分音は良いのだが...。

3.pvr.rtlradio
長所は、出力設定をguiから細かく設定出来る。
デフォルト状態で使用するには、やはりCPUの負荷が大きい。
しかしながら、input sample rateを下げる事で緩和出来る。
また上記二つに比べ後発であり、開発は続いているようである。

注意点として、2、3のpvrアドオンに関しては海外仕様の周波数が想定されている。
そのため、選択できる範囲を日本仕様にプログラム修正する必要がある。
修正と言っても数字を変えるだけなのだが。

ちなにみ、v18ではrtl_fm_streamerを用いて環境を整えていた。

kodiでラジオ

特に不満も無いのだが、この機にpvr.rtlradioを使用することにした。
比較的に新しいプロジェクトであり、他と比べて更新も多い。
アドオン形式なので設定に手間もいらない。
当然、機能面でも優れている。

とりあえず、ビルドする前に周波数の範囲を変更する。
変更しなければ、データベース登録時にFM周波数が87.5MHz以下は弾かれる。
よって、当該箇所を87.5 → 75.0に変更。
又、同タイミングの処理で、コメントと異なる箇所があったので修正した。

modified   src/database.cpp
@@ -1105,7 +1105,7 @@ void import_channels(sqlite3* instance, char const* json)
         "json_extract(entry.value, '$.logourl') as logourl "    // <-- this one allows nulls
         "from json_each(?1) as entry "
         "where frequency is not null and "
-        "  ((frequency between 87500000 and 108000000) or "        // FM / HD
+        "  ((frequency between 75000000 and 108000000) or "        // FM / HD
         "  (frequency between 174928000 and 239200000) or "        // DAB
         "  (frequency between 162400000 and 162550000)) "        // WX
         "  and modulation between 0 and 3 "
@@ -1113,10 +1113,10 @@ void import_channels(sqlite3* instance, char const* json)
 
     // Remove any FM channels that are outside the frequency range
     execute_non_query(instance, "delete from channel where modulation = 0 and "
-        "frequency not between 87500000 and 108000000");
+        "frequency not between 75000000 and 108000000");
 
     // Remove any HD Radio channels that are outside the frequency range
-    execute_non_query(instance, "delete from channel where modulation = 0 and "
+    execute_non_query(instance, "delete from channel where modulation = 1 and "
         "(frequency not between 87900000 and 107900000 or (frequency / 100000) % 2 = 0)");


では、ビルドするための準備をする。
ラズパイをターゲットとするのだが、ビルドはmsbuildを使用するようになっている。
一瞬、面倒かと思ったのだが、推奨バージョンを度外視すれば有り合わせのもので事足りた。
結局、インストールしたのはクロスコンパイラだけ。

無事ビルドが終えれば、zipにパッケージされたアドオンをインストール。

後は設定だけ。
ラズパイ3で使用するには、cpuの負荷を少し調整する必要がある。

Input sample rate - 1.0MHz
Downsample quality - FAST


後は好みの局を登録するだけ。


これで、アンテナを調整すれば聞けるはず。
めでたし、めでたし...となるハズが;

無事に放送が流れたのを確認後、自前のtv用pvrアドオンを有効にするや否や...。
両pvrアドオンに処理が戻らなくなった。
へっ、併用出来ないのか?
一瞬ざわついたが、プログラムを見直して此方に非があることが確認出来たので修正した。

修正したtv用pvrアドオン

ざわ、ざわざわ...。