Re:シルの日々の戯言。

散財が生き甲斐になりかけている、デジタルガジェット大好き自称黄色いネズミの戯言。

過去入手したPX-W3U4を有効活用したいので・・・

四捨五入して3年前、私は変なデジタルガジェットを買いました。
sylve.hatenablog.jp

歯切れの悪い表現で綴っていますが、早い話がPC向けの地デジ/BS/CS録画チューナーです。歯切れが悪い理由としては、俗に言うTS抜きチューナーなので限りなく黒に近いグレーな製品だからです。*1
過去ThinkPad T440pやThinkPad W541などのノートPCとWindows10を用いてアレゲな録画環境を整えてきましたが、自宅ラボ環境見直しに合わせて撤去してジャンク箱の中で眠ってたガジェットです。

時は流れ、地味に本業の方で多忙を極めてた案件が一つ終わり、若干の余裕が生まれてきました。
余裕が生まれると言うことは余計なことを考えてしまうことになり、こんなのを見て興味を持ってしまいました。
raspberry-pi.memo.wiki

Raspberry Pi 4BとPX-W3U4を組み合わせた録画環境とのことです。
PX-W3U4はちょうどジャンク箱の中で眠ってます。Linux環境ではPX-W3U4内蔵のカードリーダーが使えないので、別途B-CASを読み込むカードリーダーが必要ですが過去にPT2を利用した録画環境*2を整えてた+その時に使ってたカードリーダーを(再上京に合わせて持っていけないからと録画環境を解体したのですが)何故か再上京のタイミングで持ってきてたので、鉄板となるカードリーダーもあります。

・・・これは、書かれている情報をベースにRaspberry Pi 4BとPX-W3U4を組み合わせればLinuxベースの録画環境が整うのでは!

そう思った日が私にもありました・・・

結論を言うと、IPTVで視聴するにはRaspberry Pi 4Bでも余裕です。M2TS(TS)形式で録画するだけならRaspberry Pi 4Bでも余裕です。録画後に自動エンコードを走らせようとしたり、IPTVではなくffmpegを用いてリアルタイム視聴を試みようとするとRaspberry Pi 4Bでは駄目です。

Raspberry Piにはハードウェアエンコーダーが搭載されているので、サクサクと動いてくれるものと思い込んでしまいましたが、思ったよりイケてませんでした・・・。
Raspberry Pi OSではh264_omxなるオプションを指定することでハードウェアエンコーダーが利用できるとのことですが、実際に指定しても上手く動かず。
ネット上の情報を見る限りは単純置換で大丈夫のように書かれていましたが、実際には事細かなオプション設定が必要なのか単純置換では動かず。さらにはRaspberry Pi OSで提供されているffmpegがイケていないのかソフトウェアエンコードでリアルタイム視聴で強引に視聴を試みると画面比率が崩壊して表示されたり、想定した環境を実現することが出来ませんでした・・・。*3

しかし、中途半端に心に火がついてしまい改めて地デジ/BS/CS録画環境を整えるとともに、リアルタイム視聴環境を整えてみたいと言う衝動に駆られてしまいました。

今回衝動買いしたハードウェアについて

  • 入手元: じゃんぱら
  • 商品名: Intel NUC8i3BEH
  • 浪費金額: 税込み30,840円(RAM/HDD費用含む)

不要不急に属する買い物で秋葉原を訪問し、そのタイミングで入手出来た中古ハードで揃えてしまいました。
本当は10,000円くらいの中古小型PCを考えていましたが、リアルタイム視聴のタイミングと録画変換が重なった場合を考えて、ある程度ソフトウェアエンコードでも問題なく動いてくれることを想定して最低Core i系統だよなぁ・・・とターゲットを定めた結果、ちょうどM.2+2.5型HDDが積めるNUC8i3BEHがあったので少し悩んで飛びつきました。

NUC8i3BEHのメモリはDDR4-2400止まり、(録画以外の)他の用途に使い回す予定はありませんが予算が許す限りメモリを積みたいので16GBと少しだけ盛りました。おそらく録画だけで16GBのメモリを食い潰すことは無いとは思いますが、将来用途転用するときに16GBメモリ積んでれば不自由することは無いかと思い積んでおきました。*4

録画環境と言うことからストレージはHDD、ちょうど2.5型2TBのディスクがあったのでそれだけ確保しておきました。M.2 SSDも確保しておきたいところですが、予算を抑えるために手持ちのM.2 SATAを搭載することに・・・。・・・確か1年くらい前にCF-RZ5を買ったときに確保した180GBのSSDがあるので、それを転用しましょう・・・。
sylve.hatenablog.jp

・・・あ、なにげに忘れてたことですが、NUCはミッキーケーブルが必須です。AC電源は付属していますがミッキーケーブルが必須なので皆さんはNUCを買うときは必ず一緒に確保しておきましょう。そうでないと他の周辺機器からミッキーケーブルを強奪する必要があるので注意が必要です(1敗)*5

Ubuntu 20.04 LTSをオンプレ初導入

PX-W3U4はWindows環境では既に導入実績がありますが、何やらPX-W3U4は「いろいろ」とイケてないらしいので、そのままでは残念極まりないらしい・・・です。
実際問題、PX-W3U4を運用していた頃は頻繁にドロップが発生してて「PT2に比べてイケてねえなぁ・・・」と思った次第です。・・・いや、何かと最強と謳われたPT2と比べるのは酷ですが、それにしても・・・と言うのは思ってましたけど・・・。

しかし、Linux向けの非公式ドライバと言うものが存在するようで、こちらを利用するとだいぶいい感じに運用できるとのことです。
github.com

そのため、今回はLinuxベースで環境を整えようと思います。・・・事前検証時にRaspberry Pi 4BでDebian系OSを触れてきたので、Ubuntuを利用していこうと思います。
Ubuntuは主にDesktop版(の日本語Remix)ばかりを使ってきましたが、今回はServer版です。手持ちの仮想環境では何度か入れていますが、まさかの令和の時代にLinuxオンプレ導入です。

幸い仮想環境でボチボチ触っていたのである程度は慣れていますが、なんと申しますか貧乏性なので「こんなハイエンドマシンにCUI前提でLinux入れちゃうとかMOTTAINAI!」とか思っちゃって*6いろいろと思考の残念感が拭えないと申しますかなんと言いますか・・・。

なおQSVは上手く扱えてない模様

環境は組んでとりあえずソフトウェアエンコードでリアルタイム視聴・エンコードが行えるところまでは確認できました・・・が、QSV(ハードウェアエンコード)が行えず。*7
厳密には録画環境のフロントを担当しているEPGStationのconfig.ymlがまだチューニング出来ておらず、それ以前にドライバ周りが不十分だったりなんなりでまだ四苦八苦している有様です。
github.com

一応手動でエンコードする場合はQSV(VAAPI)経由でのエンコードが行えるので、一旦は現状のソフトウェアエンコードで運用し、時間を見てconfig.ymlをチューニング(適切なパラメータを付与できるよう修正)してのぞみの環境を整えられるようにしたいところです。

ただ、Core i3と言えど最近のCPUなのでソフトウェアでも十分エンコード早いんですね・・・。今回CUI前提のLinux環境なのでGUI周りの描写で余計な処理してない+デフォルト設定が720p設定だからと言うのもあり、速攻でエンコードが終わっててワロタ・・・。*8
なんかこのままソフトウェアエンコードでも良い気がしなくはないのですが、大枚叩いて環境を整えてしまったのでチマチマと設定を進めて行きたいところです。・・・えぇ、現状だとリアルタイム視聴でデフォルトのM2TS-LL以外を選ぶと視聴中に映像が止まったりで少々つらい部分があるので・・・。*9

構築時の流れはまとめておきたいが・・・

色々と情報を掻い摘んで環境を作ったので、Ubuntu 20.04 LTS(amd64/x86_64)+PX-W3U4での環境整備の記録を戯言日記に残しておきたいと思います・・・が、黒に近いグレーの位置付けなのであまり情報をまとめてしまうと幇助幇助で面倒なことになりそうなのでどうしたものか・・・。

情報公開されているから私のようなスクリプトキディでも環境を整えることができたので、フィードバックと言う観点では構築時の流れをまとめておいたほうがいいんでしょうが・・・。
ただ、個人的なナレッジ管理で利用しているKnowledge(オープンソース)*10にも関連サイトのURLを適当に貼り付けた状態で放置されている有様なので、仮に情報を公開するにしても一旦情報を整理する時間が必要なので次の瞬間に公開・・・と言うわけには行かないので、まぁ公開しなかったら「コイツ面倒くさくなったな・・・」と*11生暖かい目で見守っていただければ幸いです・・・。

*1:詳しくはWikipediaの「Ts抜き」を参照、B-CASカードの扱いが違法ではないものの・・・と言うお話。

*2:10年以上前に大変人気だった地デジ/BS/CSチューナー、すごく安定して録画が出来た記憶があります。

*3:ちなみにARM64のUbuntuも試しましたがあまり変わらず、更にソースからビルドすると使えるらしいv4l2m2mを試そうとffmpegをソースからビルドして試してみましたが依存関係周りの情報が中途半端にしかネットに書かれてなくて、依存関係に片っ端から引っ掛かって地獄を見ました・・・。

*4:今回はUbuntu 20.04 LTSで録画環境を整える予定なので、普段よりもメモリ消費は少ないかと・・・。

*5:秋葉原に買いに戻ろうかと思いましたが、手持ちプロジェクターがミッキーケーブルだったので、プロジェクターの電源から略奪してNUCを動かしてます。

*6:昔は型落ちどころの話じゃない世代のPCにLinux入れて自宅サーバーとかやってましたので、どうしても普通にWindows積んで遊べる世代のマシンにCUILinux入れちゃうと・・・。

*7:厳密にはLinux上でハードウェアアクセラレーションを利用するためのAPIであるVAAPIを利用する予定です。Ubuntu 20.04 LTSのリポジトリで提供されるffmpegがVAAPI対応なので、手間無く導入するために今回はVAAPIを利用します。

*8:本来の解像度を鑑みると1080p設定でエンコードしておきたいところですが、負荷テストで適当に録画している現状だとオリジナルのM2TS(TS)ファイルも残しているのでしばらくの間は大丈夫ですが、チューニングを終えたらオリジナルのファイルは消すようにしないと2TB積んでたとしてもストレージ周りが厳しいなぁ・・・。

*9:別に変換挟まずにIPTVで見ちゃえばいいだけの話ですが、Web経由で閲覧できると言うのは見逃せない利点なので・・・。特に以前組んだ環境では(リアルタイム視聴は)実現出来なかった部分なので・・・。

*10:いやテメェの言ってる「知見」ってのがナレッジやろ!と言われそうですが、Knowledgeと呼ばれるオープンソースの知見共有サービスが存在するのです・・・。

*11:別にこれだけが原因ではありませんが、チビチビと手を出しているCoeFontのゲーム実況動画も遅れ気味で更新してる有様なので・・・。