ANIME LOCKERのdrop問題、ついにチューナー追加

ブースター入れたり、エンコードタスクの実行時間を録画時間帯から外したり、電源を交換しても改善がなかったANIME LOCKERの地デジdrop問題、結局USBの外付けチューナーを追加しました。

PLEX USB接続 地上デジタル・BS・CS対応TVチューナー PX-Q3U4

PLEX USB接続 地上デジタル・BS・CS対応TVチューナー PX-Q3U4

32,100円(11/17 18:17時点)
Amazonの情報を掲載しています

最初に使っていたのがPX-Q3PEで、これは地デジは問題ないもののBSでちょいちょいブロックノイズが発生していました。システムを6.0系に更新するついでに交換したPX-Q3PE4では逆にBSは完璧な一方、地デジはdropが頻繁に発生して、MP4で音ズレをしたりブロックノイズになったりしていました。とりあえず好調なPX-Q3PE4のBS録画はそのままに、地デジだけをQ3U4で録るにはどうしたらいいかについてメモ。

まず現在のANIME LOCKERではチューナーは自動認識されます。なので、USBチューナーの場合差し込むだけで「設定・管理」->「チューナー状態確認」のページにズダダっと項目が増えます。Q3PE4+Q3U4で16チューナーが出てきます。これを司っているのが、/home/foltia/perl/count_tuner.plであることを突き止めました。80行目辺りにBS、135行目辺りに地デジチューナーのデバイス名を定義している配列宣言があります。ここで無効化したいチューナーの行をコメントアウトしておくと、「チューナー状態確認」画面に現れなくなりますので、おそらく認識から外れて録画にも使われなくなるものと思われます。たとえば上記チューナーだと、BSは以下の8つ。

地デジは、

なので、それぞれ4つずつコメントアウトしました。ただしここでトラップがあります。PCIExpressのQ3PE4とUSBのQ3U4、最初にUSBを追加接続した時は、当然ながらDTV8-15で認識されました。なので、BDの8,9,12,13、地デジの2,3,6,7をコメントしていました。ところがシステムを再起動した後はUSBのQ3U4により若い番号が割り振られ、意図と逆のチューナーが無効化されてしまいました。現在は上記のような設定になっていますが、今後また再起動した後に常にUSBが先に認識されてくれるのか、はたまた毎回バラバラなのかは余談を許さない感じです。

いっそUSBチューナーだけでBSも地デジも完璧に録れるならばいっそPCIExpressのQ3PE4は外してしまう方が安定運用できるのかも知れません。現状、USBの帯域的な面でも併用して分散させた方が安心な気がしているので、BSはQ3PE4、地デジはQ3U4という担当でいいかなぁと考えています。

 

とまだ完全解決の確証はないですが、2日ほど録った感じではQ3U4での地デジ録画は(db的な数値は変わらないものの)音ズレとかもなく良好。まぁ電源は交換してしまったのでそのまま続行しつつ、エンコード遅延は外して元通りにして、しばらく様子見です。

初夏の電源交換祭り(1)録画機編

自宅、実家のPC群の電源が次々に寿命が来てるっぽくて立て続けの交換が必要になりそうなのでシリーズ化。

まずは録画PC。チューナーをOSを刷新してから、BS感度が向上した一方で地デジがdropするようになってしまい、分波器を交換したりブースターを入れた、処理落ちを懸念してエンコードのバッチ実行タイミングを変えたりしたものの根治はせず。これはもう地デジ用にUSBチューナーを追加するしかないか?というところまで来たのだけど、できれば設置面積を増やしたくないなということで、その前に懸念払拭の意味で電源を交換してみることに。

記録によるとこのPCを組んだのが2014年。はや5年が経過。まー一般的にいったら劣化しててもおかしくはない時期。SFX電源で300Wのものを入れてたっぽいので、容量強化も含めて交換してみることに。こちらの450Wタイプをチョイス。効率も80PLUSのPlatinum認証のものにして効率アップも測ってみます。まぁシステムとしてはdGPUも積んでないし2.5inch HDD x 2台とチューナーだけなのでかなりオーバースペックだと思うんですが。

CORSAIRは修理になった時に海外発送になるのが難点とされてますが、実際問題、電源ユニットは使い捨てだと思っていて修理に出したことないしな、、稼働不能期間があったら困る用途だし。ということで気にしないことに。でも7年保証というのはヨサゲ。

ケーブルが固いというレビューが目立ちましたが、実際には固いというか太い、かな。曲げられないということはない。普通はコネクタ単位でケーブルをまとめてメッシュで来るんでアルと思いますが、本製品は写真のようにケーブル1本1本がメッシュで囲まれているので細い空間に詰め込むのがちょっと大変。

付属電源ケーブル

流行りの全てのケーブルがコネクタ式なタイプなので、SFX電源を入れるような小型PCのケースではさぞ有効だろうと期待したものの、感覚的にはエアフローが改善するかってほどケースが空いた気はしないかな。SATA電源は4コネクターが1ケーブルに数珠つなぎになってるので、例えばHDD/光学ドライブが1機でも4機でもケーブルの量は同じ。完全に余って外しておけるのは写真にある古の4ピンペリフェラルと今回はdGPU用くらい。まぁそれでも有り難いですが毎度このケーブルの処遇には困りますね。いつか使うかもしれないけど、箱ごととっておくにはデカい。上記保証もシールと購入証明がいるらしく、どうしておこうという感じ。今回他の電源も立て続けに買うことになりそうだけど、他の(ATX電源も含む)製品と互換性があるならばCORSAIRに揃えて1本ずつだけ保管しておく手もあるかも。

で、チューナーのdropに改善があるかはまた様子見です。

2019.06.22追記:あんまし効果なかったぽくて結局チューナーを増設しました…

ANIME LOCKERのドロップ回避メモ

先日ANIME LOCKER機のチューナーカードを替え、システムを4系から6系にしたところ、なぜか地デジ録画のMP4ファイルが音ズレやブロックノイズでまくりに。BSは問題なし。以前は逆にBSの感度が低くてMP4変換が詰まることが多かったんですが、それは収まった模様(更新後一度も発生していない)。

MPEG2ファイルをのドロップ状況を調べて発生が確認できたので、受信環境の問題化と思いケーブルかえたりブースターを入れてみたものの改善せず。そもそも以前は同じケーブルまでの環境で問題なかったのでチューナー特性か個体差?と思って諦めてたんですが、ふとこちらの記事でエンコード負荷が高いとドロップするという指摘を拝見。

曰く、

  • エンコード(ffmpeg)の同時実行スレッド数を抑える
  • エンコードが実行される時間を録画が集中する時間からズラす

というアプローチ。とりあえず簡単に試せるのでトライ。たぶんシステムアップデートで上書きされて戻ってしまうのでとりあえずメモ。ちなみに本稿時点のシステムは6.1.4。

■エンコードのスレッド数を減らす

sshでログインして/home/foltia/perl/ipodtranscode.plを覗くと、確かに-threads 0というオプション指定をしてる箇所が多数見つかる。ffmpegの仕様を調べると0は自動でCPUのスレッド数の1.5倍で実行するらしい(どういう理屈??)。ということで、ウチはi5/4570Tで2コア4スレッドなので、とりあえず-threads 4にしてみる(上記記事と同じ)。場合によってはもっと減らしてみてもいいかも知れない。

■エンコード実行時間を制限する

ユーザfortiaがcronで定期実行しているのはこれだけ。

50 * * * * /home/foltia/perl/schedulecheck.pl >/dev/null 2>&1
25 5 * * * /home/foltia/perl/cron_foltia_dayly.sh >/dev/null 2>&1
25 4 * * 1 /home/foltia/perl/syobocalxml.pl 28 >/dev/null 2>&1
25 3 21 * * /home/foltia/perl/syobocalxml.pl 42 >/dev/null 2>&1
27 */5 * * * /home/foltia/perl/maintenancedb.pl LIGHT >/dev/null 2>&1

このうち、ipodtranscode.plを叩いているのはschedulecheck.plだけっぽい。ただし2番目の記事にあるrecwrap.plも録画実行スクリプトであるものの中でupodtranscode.plを呼んでるぽい。これがいつ呼ばれるかまでは追えていないですが、たぶん録画終了直後にこのブロックが実行されるんじゃないかと。ipodtranscode.pl自体は多重起動チェックをしているので、適当に呼んでも問題なさそう。なるほど、確かにschedulecheck.plとrecwrap.plからipodtranscode.pl呼び出しを押さえて、cronで任意のタイミングで実行するのは理に適ってそう。ウチの使い方ではそんなに即時エンコードは求めておらず、品質優先なので。
ということで有り難くパクらせていただき、schedulecheck.plとrecwrap.plの該当行(一箇所ずつ)をコメントアウト。

続いて、ユーザfoltiaのcrontabに

15 5 * * * /home/foltia/perl/ipodtranscode.pl >/dev/null 2>&1

などとして朝5時過ぎにトランスコード処理が走るようにしてみた。

しばらくこれで様子見。ダメそうならスレッド数を更に減らす。またバージョンアップがあった時はこれを見て変更が戻されてないかチェックすること。

2019.06.22追記:あんまし効果なかったぽくて結局チューナーを増設しました..

ANIME LOCKERの更新(6.0化&チューナー交換)

ANIME LOCKERが唐突にチューナーを認識しなくなった。またカーネル更新時のドライバー再インストールが必要かなと思ってやってみるも復活せず。ハード的に逝ったかな?もともと使用してたチューナーはBSの感度が悪く、よくノイズで映像が乱れたりMP4変換エラーが詰まってたりしてたし、システムも4.0のままだったので刷新を決意。システムは5.0からシステムパーティションのサイズが変更になり単純にはアップデートインストールできなくなってて、手動でLVM操作すれば不可能ではなく手順は示すが非サポート、というスタンスだったので面倒で放置してたのです。すでに5.xどころか6.xになり、4.xは更新も停止していたので、どのみちチューナーを交換するなら上げないとダメそげだったので。

HDDは2014年の初期導入時のWD GREEN 2.5′ 2TBと、2015年に追加したSeagate(SAMSUNG)の2TBで4TB体制だったのを、今回前者をリプレイスしてWD BLUEの4TB + Seagate 2TBに。当初BLUEだけでいこうと思ったけど、インストーラーのメッセージで起動ドライブは2TB以下の警告されたので、(そのまま進めそうだったけど念のため)併用することに。結果として6TB、セットアップ後残量5.5TBとなりだいぶ余裕もできました。

当初はデータを保持して移行することも考えたんですが、結局面倒くさくなって新規インストールでいいやと。残したいファイルは一旦他のNASに待避して折を見てAmatsukazeでごりごりMP4にしていこうと。

チューナーはPX-Q3PEから後継モデルのPX-Q3PE4にリプレイス。このモデルはPCIexながら実質はUSB接続らしく、オンボードコネクタでUSB接続が必要でした。幸いマザーにピンヘッダが余っていたので問題なし。その他は仕様的にはほぼ同一ですが、チューナーテストをしてみると9dbくらいしかなかったのが16dbと向上。かなり期待できます。

あっさり動いたことを思うとやはりハード不良だったかも知れません。時間もないし感度もあがったので良しということで、原因究明は見送りw。

ANIME LOCKER 6.0はそんなに目に見える変化はないですが、録画一覧で変換ステータスが表示されるようになったのは地味に便利かも。あとデータがまだほぼ空でDBが綺麗なせいかわからないですが画面表示が気持ち速くなった印象。アップグレードライセンスでクリーンインストールはできるのか不安でしたが、インストール画面で一番古いキーから入れていけば順番にアップグレードライセンスキーが聞かれます。3.0->4.0キーの存在を忘れており、旧システムの管理画面でも4.0ライセンスキーしか表示されなかったので、それしかメモしておらず焦りましたがVectorの履歴画面から無事発掘できました。滅多にすることではないとはいえ面倒なのでアップグレード成立後は最新バージョンのキーを生成して表示してほしいものです。

ともあれクリーンな環境でまだまだ活躍してくれそうです。

ANIME LOCKERで欲しいファイルを見つけやすくするプチハック

ANIME LOCKERは非常に便利なのですが録れたMP4をiPhoneにつっこんで出かける際、ファイル名が若干不満でした。SambaやDLNAのフォルダ構成はこんな感じ。animelocker

「01-全録画」に全てのファイルが含まれるんですが、実は階層がかなり深く、01-全録画 -> 2016 -> 11 -> MP4HDと掘り下げてようやくMP4のある階層です。しかも最近録画された分をもって出ようとした時、月始めなんかだと複数のフォルダを2階層戻って開き直さなければなりません。そしてファイル名も「1109-0135_夏目友人帳 伍_6_音無しの谷_HD_383044.MP4」みたいにかなり長い上、先頭に放送日時を示す数字が来るので、iPhone上(おやゆびでお上)でのソート順が放送順になります。個人的には番組別にしたいのです。さらに個人的な事情ですが、同居人がキーワード予約で録るバラエティ番組なんかもズラーっと並ぶので、当期追いかけているアニメだけ拾ってiPhoneにコピーするのがひどく面倒くさいのです。

「02-アニメ自動録画」から辿るとキーワードやEPG録画のものは表示されず、かつ番組毎に整理されててヨサゲなんですが、これも階層としては、02-アニメ自動録画 -> 01-あ行 -> 05-お ->4288-Occultic;Nine -オカルティック・ナイン- -> MP4-HDまで掘る必要があります。複数の番組から最新録画を拾うのは骨が折れます。

実はこれらのフォルダ内の動画ファイルは内部的にはシンボリックリンクで構成されています。実態となるファイルは別のところにあり、それが複数の検索方法(フォルダ分類)から辿れるように、あちこちにリンクを貼っているのです。複数のフォルダに同じファイルが見えるものの、ディスク上で個別に容量を食ってるワケではありません。iTunesのスマートプレイリストみたいなものを想像してもらうとイメージしやすいかも知れません。で、だったら自分のルールで必要なファイルだけが集まっている仮想フォルダを作れるんじゃね?ってことで、簡単なPHPスクリプトを作って見ました。

基本的な動作は01-全録画の指定月(指定がない場合は当月)のファイル一覧を取得し、キーワード録画のものを除外。次に、アニメ自動録画で録ったファイルのファイル名を正規表現置換で先頭の数字と末尾の数字を削除し、サブタイトルを「」で囲むというリネームを施します。また話数はソートした時に10話が2話より先に来ちゃわないように1桁話数は0をつけて2桁にしています。こんな感じ。

  • 加工前:1109-0135_夏目友人帳 伍_6_音無しの谷_HD_383044.MP4
  • 加工後:夏目友人帳 伍_06「音無しの谷」.MP4

これを、上記スクショのSamba/DLNAフォルダ下に「99-お好み」なんてフォルダを掘って、そこにシンボリックリンクを作る感じ。これで最新のアニメMP4がさっと一覧して抜き出せるようになりました。

これをcronで定期的に実行すれば、常に最新状態が保たれるんですが、面倒くさかったのと、都度追加分を目視で確認できた方が便利かと思って、いまのところブラウザ経由で手動で叩くようにしています。

ここにおいときます。

https://github.com/do-gugan/animelocker_mymp4