猫の手も借したい

暇を極めた時に更新します

カードリーダーが届いた

akkisino02.hatenablog.com



届きました。


届いてまず動作確認。

f:id:akkisino02:20160911214202p:plain
無事認識。

というわけで、libaribをコンパイルしよう。->makeが通らない


帰宅してから3時間ほど紆余曲折もあったけど、私はげんきです。



最終的に無事環境が整って、正常なTSが吐き出されることを確認。
期待していたCappuccinoでのリアルタイム視聴は、少しパワーが足りないけど待てば降りてくる感じ。まあ使わないかな…ってなった。
これまでどおりHotcocoaに吐き出して朝エンコという流れでアニメを出勤前に見る生活に戻れそう。
しかし本当にココ一週間ほどまともに録画出来てなかったのが痛い。


これでしばらく様子を見て、なにか問題があればまた考えます。
ラズパイは時間を見つけてなんとかします(適当)。





今朝のごちうさにカードリーダーが間に合わなかったのが非常に心残り(円盤は持ってる)

録画鯖が死んだ(物理)ので心も折れた

現在運用中だったNutmeg(RaspberryPi 2)の録画鯖が死亡。

具体的にはおそらくSDが死亡。

最近いろいろ様子がおかしかったので一度リブートをかけたらSambasshに繋がらなくなりました。最初は固定してないからIPが変わったのかと思ったけど、HDMIつないで確認してみたらsshServerやSambaServerのserviceの立ち上げがFailedに。

そのほかにもいくつかエラーを吐いていて、ブート処理が5回くらい繰り返されるようになってました。

その後何故か起動するけど実際いくつもデーモンは死んだままなのでどうにもこうにも、といった状態。

 

これを期に録画環境を再構築することにしました。

また、ICカードリーダーも家にあった端子逝かれかけの古いものを使っていたので買い直すことに。

 

 

Nutmeg→Cappuccino(LIVA)へ録画マシンを変更。

これにより、

・LAN内転送速度の向上

・CPUがAtomZ3xxx台になったのでリアルタイム視聴も可能になって欲しい(希望的観測)

 

あたりのメリットがあります。

また、ラズパイのSDが死ぬのも二回目なので、eMMCの方がまだましかなと。撮ったデータはファイルサーバーに逃がすし。

 

 

伴い、Cappuccino上で動かしていたTeamspeakのサーバーをHotcocoaに移動。Hotcocoaが「なんでも請け負うファイルサーバー」みたいになってきた。

ラジオの録音もHotcocoaで動かしてるけどこの話はべつの機会に。

まず、今まで

Cappuccinoではそのくらいしか動かしていなかったし、いちおう本来の用途だったRubyの実行環境などは今度再構築したNutmegにやらせればいいかなと思う。

 

 

カードリーダーがPrime対応商品じゃなくて神戸から来るので、しばらくかかりそう。

なので、届くまでに先にほかのことを揃えよう。

 

チューナーのパーミッション見直し

今までの環境で、パーミッションをかなり適当に設定していたせいで5日に1回くらい録画チューナーを触れずに録画失敗がありました。

これを真面目に設定しなおし、ruleも見直して同じことの起こらないように対処。まあこれ最初からやっとけよ案件なんですけど。

 

実行ユーザーを追加。

面倒だったし他の用途のあるマシンじゃ無かったのもあって汎用ユーザー(rootではない)で実行してたけど、これにともなうエラーもあったので録画専用のユーザーを追加。

 

Mirakurunを使わず録画コマンドを叩く。

原因は不明だけどMirakurunで録画するようになってから、前の録画が終わった後デバイスを解放しなくて以後の録画全て失敗 ってことが起こるようになったので撤廃。Mirakurunが悪いのはかはよくわからないけど原因の切り分けのために一度使わずに。

 

Chinachuを継続して利用。

folitaとかEPGrecとかも考えたけどChinachuでなじんだので。というか正直folitaが何出来るのかよくわかってない。

 

 

このあたりまで再構築しました。後はカードリーダーが届いてそれの設定が終わったら完了。今は録画ルールを以前から引き継いでるので複合化がちゃんと出来てない画質の悪いTSが吐き出されてる。

 

まぶしー!まぶしー!夢があるの?

ないです。


前回の光目覚ましの件、完全に書いたことすら忘れてた。
akkisino02.hatenablog.com

続きということで、光目覚ましを使った感想を。



f:id:akkisino02:20160815013020j:plain

f:id:akkisino02:20160815013030j:plain
部屋の電気はつけたままなのに真っ暗に写るくらいまぶしい。直視できない。


気づいたら高確率で倒れてる

周りによさげな置く台がないのでベッドの上に直接おいてます。寝相は悪い方ではないと思うけど、硬いベッドでもないのでパタンとそのまま。
するともちろん私を照らしてくれることはないので闇に飲まれた思考はすやすや。

滅多にないけど床で寝たときは目覚ましも安定してるのでちゃんと照らしてくれます。もうベッドを使わないで寝ればいいのでは?

顔がそっちを向いているとは限らない

横を向いて寝る派なので左側から照らすように置いてますが、いつも同じ方向を向いて寝ているは限らない上に、朝眩しいと感じると反対に寝返りを打つので意味がない感じ。
もちろん部屋自体がめちゃくちゃ明るくなるのでそれで目が覚めることもあります。USBポートに一回でケーブルを差し込めるくらいの確立であります。

私は眩しくても寝れるタイプなのでないけど無意識に布団をかぶってしまうタイプの人とかはあまり効果がなさそう。

結局のところ

設置する環境を整える必要がありそう。という結論。

床で寝たときのようにしっかり照らせればばっちり起こしてくれるので、ベッドの枠を利用して上から照らせるようにアームを買おうかなとも思ってます。


あとは、それなりに長い時間照らしてくれますがその眩しさが過ぎると二度寝に入るタイプなので「目が覚めたら起き上がる」という習慣が大切です。私にはできない。
私は何時に寝ても6時ごろに目が覚めてしまう体質なのですが、もちろんそのあと二度寝に入ります。一回二度寝するとまた1サイクルばっちり眠りに行くのでなかなか起きられないのは直さなきゃいけないけど6時に起きても困る...って感じ。
夜中から早朝にかけて血糖値が下がるみたいで、もともとの低血糖とあわせて「目は覚めてるのに体が一切動かない」というのがいつもなのでこれも改善しないとダメそう。



つまるところ、「規則正しい生活」「十分な運動」「バランスのいい食生活」を徹底したうえで、光目覚ましが本来のポテンシャルを発揮できるわけでこれがあるからといっておめめぱっちり!しゅごい!とはならない、ということ。
この目覚ましは24kで大切なことを教えてくれた。

当たり前のように見えますが昨今ではかなり難しいことなので、すこしずつ改善していかないとと思います。


目覚まし自体、寝起きはいいのでまったく意味がないということではないです。むしろ、ちゃんと起きてるけどふつうの目覚ましでは朝すっきりしない、寝起きはイライラするというタイプの人にはかなりよさげ。


はやく桐間紗路さんが毎日起こしにきてくれるVR実装してくれ。

なんでも為せば成ると思うな

人間、やれば出来ることと出来ないことがあります。

努力の範疇でこなせることなのか、それともいくら意識してもどうにも出来ないことなのか。その見極めで行動を考える必要があります。

 

ちなみに目覚まし時計の話です。

 

 

***24kの目覚まし時計を買った

買いました。バイト先の人に爆笑されました。

購入したのはIntiSquare。これは光目覚ましといって、強い光を浴びせることによって自然な目覚めを促すもの。

一般的な目覚まし時計は音で起こします。あれは、睡眠を妨害することで眠りを続けられなくして起こすので、機嫌も悪くなるし目覚めも良いとは限りません。ちなみに私は基本鳴ってても気づかないので問題はないです。

 

対して光目覚ましは、太陽の日の出をシミュレートしているので昼行性の動物として本来の目覚めが期待できるのです。

 

 

**その前に

ここで軽く人間の生活リズムについての予備知識を。私は過去に昼夜が逆転していたり一日20時間寝ていたりした経験があるので、実体験から来る経験則もあります。

1,人間の生活リズムは一周24時間ではない

2,それは強い光を浴びた時点でリセットされる

3,そのリセットから約17時間で眠くなる

すべて個人差があります。

 

まず、人間の生活リズムは大体25~26時間周期と言われています。しかし1日は24時間。

なので、純粋な意味で規則正しく生活を送ると毎日徐々に時間がズレてしまい、12~24日でまた同じ時間での生活に戻るのです。実際にフレックス勤務だったり自宅警備だったり決まった時間に何かがないとそういう生活な人も居ます。

 

でも大抵そんなこともないと思います。何故か。

それは"強い光を浴びた時点でリセットされる"という性質があるからなんです。朝起きて、カーテンを開ける太陽の光を見てああ眩しい、と。この瞬間に体内時計が0に戻り、そこからカウントがまた始まります。このおかげで特別時間がズレることもなく生活できるのです。

 

そして、そのリセットから約17~18時間で眠くなるので、6時に起きたら23時に睡魔がお出迎え。さて寝るかと準備して寝付くまでを考慮して6時間くらいの睡眠。ああ朝だ太陽が眩しい、リセット。

人間はこうしてリズムを保っているのです。

部屋の照明程度では大丈夫ですが、電気を消さないと眠れないのはこういうところと関係しています。

 

明るかろうが何だろうが知らねえよ眠いわ っていう人は本来のリズムからズレて、なんかしらの理由で睡眠が足りてないのです。それいろは色々理由はあるけど

 

ちなみにカーテンを閉めていたり日当たりが悪かったりで生活リズムをリセットできずズレてしまう人が先の25時間生活だったり睡眠不足だったりになることが多いです。

逆にこのご時勢だとスマホをいじっていたりパソコン見てたりでリセットが働いてしまうこともあり、それで眠気が飛んで生活リズムが狂う、なんてのもよくある話です。思っているよりあいつ等は光が強い。文明が進化すればするほど自制をしないと利器に食われてしまうんですね。

 

 

 

このことを知ると光目覚ましがどんな物なのかわかっていただけるかと。

眠いので続きはそのうち書きます。

ラズパイで録画鯖をつくり隊 4話

なんかもう1~3の記事のリンク貼るのめんどくなってきた

1話: ラズパイで録画鯖をつくり隊 - 猫の手も借したい
2話: ラズパイで録画鯖をつくり隊 2話 - 猫の手も借したい
3話: ラズパイで録画鯖をつくり隊 3話 - 猫の手も借したい


今回もエンコについてのお話

ffmpegエンコードしていたが、何故か1本エンコが終わると毎回ffmpegがクラッシュする。
具体的には「ffmpegは動作を停止しました」というポップアップが出る。

手動でそれを閉じて終わらせてやらないと次のエンコに進まないので、自動化してる意味が無い。
吐かれるファイルを見るとエンコ自体は正常に出来てるぽいので、最初はこのダイアログを強制的にスキップする方向で考えてたが、なんだか気持ち悪いのでffmpegをやめることにした。

HandBrakeCLIを採用

GUIじゃない(もしくは非表示できる)
スクリプトから呼び出して処理できる
・ハードウェアエンコードができる

の要件で調べてみたところ、HandBrakeのCUI版があった。これを使ってみよう。
どうやらNVEncやCUDAは使えないみたいだが仕方ないね。
QSVを使ったハードウェアエンコードをしてる。

ついでなのでエンコ設定を真面目に考えなおした

形式 拡張子 解像度 フレームレート ビットレート
エンコ前 mpeg2-ts .ts 1440*1080 インターレース60 15Mbpsらしい
エンコ後 h264 .mp4 1280*720 インターレース解除30 1600kbps

色々調べてみたら1280*720にリサイズするのが主流らしい。地上波放送では微妙にボケてるのが引き締まるだとか。
ビットレートは色々試して見た感じで、荒くなり過ぎないギリギリ。好みの範囲ではある。
フレームレートは最初23.976にしてみたが、結構かくかく見えて違和感があったので30にした。




これでエンコードすると、ジョジョ8話が3.26GBから404MBに抑えられた。しゅごい


アニメ1話を400MBほどに抑えられるとすると、一期に20本として
1話400MB×ワンクール12話×期あたり20本=96,000MB
96,000MB/1024MB=93.75GB
なんと当初の1/7~8にまで抑えられることに。
単純計算で2TBのHDDで21クール撮れることになる。実際には当日分はTSのままなので誤差はあるけど。


バッチファイルを書いてスタートアップに登録し、Windows起動時にyesterdayフォルダ内のTSを全て逐次エンコするようにした。エンコ中にPCを落とすミスを無くすためにPowerShellのウィンドウは表示させておく。

未エンコが80本くらい溜まってしまったので今晩はCPUくんに死ぬ気でエンコしてもらうことにする。

Sambaを参照するとアベレージ50fpsくらいでエンコが進むので、30分アニメで大体15分あれば終わる。
いまのところ一日に撮るのは7~8なので
みごとにCPU使用率は100%だが、ハードウェアエンコードの処理を含めて100%に表示してるようなので全然負荷は感じない。
むしろメモリを想像以上に食い潰す事に驚いている。
流石にゲームをするのは気が引けるが、普通に使う分には全然気にしなくて良さそう。参考までにスクショ。
f:id:akkisino02:20160605030418p:plain


これで当分HDD買い替えなくて良さそうですね。めでたしめでたし
しかしCPUを買い換えたくなって来た

ラズパイで録画鯖をつくり隊 3話

akkisino02.hatenablog.com

akkisino02.hatenablog.com

つづきのつづき。

 
 
今回はエンコードのお話。
 
結局前回の案2を採用した。
試してみたところNUTMEGで録画してsamba経由のCAPPUCCINOのHDDに書き込みにいっても全然問題なし。
なので、KILIMANJAROのパワーでCAPPUCCINOsamba経由でエンコードすることにした。
 
 
ffmpegを使いNVEncでH.264に変換。
前にも言った気がするけどなんかもともと動きの激しいところでは荒れるので余り気にしないことにし-preset mediumで変換してる。
綺麗な画質で見たいものは円盤買うので問題ない。
 
ffmpegコマンドラインからの実行ができるのでつまりバッチファイルで実行が可能。
条件にあうバッチを作ってしまい、スタートアップにでも登録してやればKILIMANJAROを起動するたびにエンコが始まる。だいたい1つ10~15分位なので、毎日やるとして1時間はかからないと思う。最初のたまってる分は抜きにして。
 
問題として、その時点で録画中のTSにエンコードをかけてしまったら大変なことになるのでそれを避けなければならない。
というわけで以下の策を考えた。
 

f:id:akkisino02:20160602154955p:plain

フォルダ構成
(録画フォルダ)/today
(録画フォルダ)/yesterday
(録画フォルダ)/カテゴリ/番組名フォルダ以下mp4
 
まず、録画したtsはtoday以下に書き出す。
そして、日付が代わった後の朝6時(私はこの時間に番組を取ることがないため。)にcrontabでtoday内全てのtsファイルをyesterdayにmvする。(つまり当日分録画が次の日に昨日分としてyesterdayに移る)
そして、KILIMANJAROのスクリプトは昨日分であるyesterdayを参照するため、絶対に録画中のものにバッティングする事はない。
 
という寸法。mvが動く朝6時も番組を取っていると不味いわけだが、この時間には取らないし取りたくなればcrontabの時間を変えるだけで対応できる。
本当ならchinachuで録画が終わった後に自動でmvできれば良かったが難しそうな気がするのでこれで対応。
 
ちなみにエンコ後は(録画フォルダ)のrootに直接書き出し、時々手動でフォルダ整理といった感じ。
chinachuでもタイトルごとにフォルダを作ることはできたが、ものによってはサブタイトルや話名までタイトルに含まれてしまって毎週フォルダが増えちゃうようなものもあったので整理は手動でやることにした。こう言うこと好きだし苦痛じゃない。
 
 
エンコードのバッチには終わったtsファイルを削除するようにした。エンコードが仮に失敗した場合、もう復元できなくなってしまうがそんなこと言ってたらいつまでもデータ容量は減らないのである程度妥協。失敗しないことを祈る。
 
 
 
エンコが終わりきる前にマシンを落としてしまうとそれはそれで不味いわけでここは色々考えなきゃいけない。
正直、毎度手動でログみながらバッチ走らせるんでもいいなあ。

ラズパイで録画鯖をつくり隊 2話

つづき


現在、chinachuで番組表を管理しrecfsusb2iで外付けHDD録画 という環境で安定してる
外付けHDDは普段電源が切れててアクセスがあると起動するタイプなんだけど問題なし。



ただ、アニメを片っ端から取っているのでまだ一週間経っていないのにHDDを200GBも使用してしまった。

30分/3GBくらいのファイルサイズになるという話は前にしたので、ワンクール20番組取るとして

1話3GB×ワンクール12話×20番組=720GB
ワンクールで1TB食いつぶすじゃないか...(困惑)


現在のHDDは2TBなので3クールいかないくらいは入るとはいえ、無駄にファイルがデカくても今後の管理でお兄さん困っちゃう。

*エンコードするんだよ、あくしろよ
前にcmカットしたい話をしたかもしれないが、自動かつ高精度で行うのは結構難しそうなことや、割とCM見てるのもおもしろい事に気づいたのでCMカットはしないで行こうと思う。
素のtsからそのまま編集無しでH.264のmp4にエンコードしたい

元々の予定はラズパイでそのままエンコすることだったが、冷静に考えてみたらふつうに無理。
一応H.264エンコに使えるGPUが乗っているが、本命はGPIOのカメラなどの処理をさせるためのもの。
素のスペック自体あまり高くない上にそんな規格外のお仕事を強要するほど鬼畜な労働環境は労基に怒られてしまうのでラズパイでのエンコは諦めた。


**案1
KILIMANJARO(メインマシン)からNUTMEG(ラズパイ)のsambaにtsを取りに行って、KILIMANJARO上でバッチ自動エンコードsamba経由でHDDに書き込み。

**案2
NUTMEGからCAPPUCCINO(LIVA)のsamba経由で"CAPPUCCINOに接続したHDD"に録画する。その後はKILLIMANJAROからCAPPUCCINOに繋ぎ案1と同じ処理。

**案3
死ぬほどバイトを増やしHDDを買い足して1PBのRAIDを組む。


案1が正統法だと思うが、ラズパイのLANは100BASE/Tなのでかなり速度が遅い。実際今現在でメインマシンとのやりとりで12MB/sしか出ていない。
100Mbps=(100/8)MB/s=12.5MB/sなので、ほぼ最高速度限界まで頑張ってくれていることにはなるが遅いことには変わりない。

再生する分には12MB/s出てくれれば大丈夫ではあるが(大胆なシークは止まる)、エンコードする際は少しでも遅くなる要因を減らしたい。まあ詰めるとHDD持ってきて直接メインマシンに刺せよってなるんだけど。
それになんだかんだでかいファイルをやりとりするときにはもっと速度がほしい。


それを改善するための案が2。
録画自体はリアルタイムで進行されているので、概算で1k=1000として
3GB/30m=100MB/1m=1.66...MB/s
転送速度が12MB/sなことを考えても録画しながらの書き込みには十分かな。
なのでNUTMEGにはストレージを持たないで、LIVAに保存することにする。
LIVAは1000BASE-T対応なので理論値は1000Mbps=(1000/8)MB/s=125MB/s出るし、エンコ以外にもこっちの方が色々と都合がいい。
可能であればLIVAでそのままエンコしたいくらい。(パワーが足りるかと言われると怪しいので試してみないとなんとも)

LIVAでエンコするかしないかのネックは、
メインマシンでのエンコあればNVEncやCUDAでのハードウェアエンコができること。質より速度な運用ではかなりの強みだと思う。QSVは確かに速いんだけど目に見えてリソースが割かれて他のことできなくなるので避けたい。


なんか録画したTSもそれなりに画質の粗が見えるのでそんなに設定もあげなくていいかなとおもう。見るに耐えるレベルで。

予定では一本あたり500MB前後に押さえられるはずなので、なんとかしてはやく自動エンコを実現したい。



案3は誰かがHDD恵んでくれたらやります。