猫の手も借したい

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

ラズパイで録画鯖をつくり隊 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ファイルを削除するようにした。エンコードが仮に失敗した場合、もう復元できなくなってしまうがそんなこと言ってたらいつまでもデータ容量は減らないのである程度妥協。失敗しないことを祈る。
 
 
 
エンコが終わりきる前にマシンを落としてしまうとそれはそれで不味いわけでここは色々考えなきゃいけない。
正直、毎度手動でログみながらバッチ走らせるんでもいいなあ。