windows7でAT-X録画サーバの構築

2014年10月05日

LIVAでなんとか録画しようと、windows8買って入れてみたりしたけど、windows8はダメでした。

秋アニメの開始にあわせてなんとか録画サーバを作りたかったんで、windows7の入ったノートPCを録画サーバにしてみる。

録画サーバは番組開始時間が近づいたらスタンバイ状態から復帰し、録画が終了したらまたスタンバイに入るように運用するのがほとんどっぽいので、ノートでやってもそんなに電気代は増えないだろうという見込み。ちなみにノートPCのバッテリーを外して消費電力を測ってみたところ、8~10W程度になった。いけるやん!

使うソフトウェアはTVTestとTVRock。参考にしたのはこのページ

いくつかつまった点があるので上げていく。

■番組情報が取得できない。
はじめ、TVRockDTVライブラリの作成フォルダをCドライブのTVRockのインストールフォルダにしていた。そうしたらアクセス権限の影響で番組情報の取得を走らせても一向に番組情報が取得できなかった。ユーザのドキュメントフォルダに指定しなおしたら解決。

■スリープから復帰しない。番組予約のタスク登録エラーとか出る。
色々調べてwindowsの電源設定とかログイン時のパスワード設定とかは済んでいた。それでも予約した録画とか番組情報取得が走らなかった。TVRockのタスクスケジューラで復帰するからチェックを外し、タスクトレイの右クリックから「インテリジェント」のスリープタイマー(スタンバイ)のチェックで解決。TVRockの設定がWindowsのタスクスケジューラに反映されていなかったのが原因。

こんなところかな。もうちょっとあった気もするけど。

録画した番組は一度ローカルに保存し、録画が終了したらTVRockに設定していた録画後のコマンド実行でファイルサーバにアップロードし、その結果をメール通知させるようにする。

TVRockに登録するコマンドは次のような感じ。

TN:cscript "C:\Program Files\TvRock09u2\rec_post_proc.vbs" "%1" "Y:\anime\2014Aut\%a\" "%4"


"C:\Program Files\TvRock09u2\rec_post_proc.vbs" 走らせるスクリプト
"%1" 録画したファイルのフルパス
"Y:\anime\2014Aut\%a\" 保存先フォルダ名
"%4" 録画したファイル名(拡張子なし)

VBSファイル(rec_post_proc.vbs)の内容は以下の感じ。

Set objFileSys = CreateObject("Scripting.FileSystemObject")

Set objParm = Wscript.Arguments

Set objRE = CreateObject("VBScript.RegExp")
objRE.Pattern = " +\\$"

WScript.Echo objParm(1)

Dim saveFolder
saveFolder = objRE.Replace(objParm(1), "\")

If Not objFileSys.FolderExists(saveFolder) Then objFileSys.CreateFolder saveFolder

nows = Right("0000" & Year(Now()) , 4 ) & Right("0" & Month(Now()) , 2) & Right("0" & Day(Now()) , 2)
nows = nows & Right("0" & Hour(Now()) , 2)& Right("0" & Minute(Now()) , 2) & Right("0" & Second(Now()) , 2)

outputFileName = saveFolder&objParm(2)&".ts"
If objFileSys.FileExists(outputFileName) Then outputFileName = saveFolder&objParm(2)&"_"&nows&".ts"


objFileSys.MoveFile objParm(0), outputFileName

Set objFolder = objFileSys.GetFolder(objParm(1))
txtFiles = ""
For Each objItem In objFolder.Files
txtFiles = txtFiles&objItem.Path&Chr(9)&objItem.Size/1024/1024&"MB"&vbCrLf
Next

Set objDrive = objFileSys.GetDrive("y:\")
textBody = objParm(0)&" saved."&vbCrLf&vbCrLf _
& "move to "&objParm(1)&vbCrLf&vbCrLf _
& txtFiles&vbCrLf _
& "Y:\"&vbCrLf _
& "all:"&Chr(9)&FormatNumber(objDrive.TotalSize/1024/1024/1024, 0)&"GB"&vbCrLf _
& "use:"&Chr(9)&FormatNumber((objDrive.TotalSize-objDrive.FreeSpace)/1024/1024/1024, 0)&"GB"&vbCrLf _
& "free:"&Chr(9)&FormatNumber(objDrive.FreeSpace/1024/1024/1024, 0)&"GB"

Set objMail = CreateObject("CDO.Message")
objMail.From = "(Fromアドレス)"
objMail.To = "(Toアドレス)"
objMail.Subject = "tvrock log"
objMail.TextBody = textBody
objMail.BodyPart.Charset = "iso-2022-jp"

strConfigurationField ="http://schemas.microsoft.com/cdo/configuration/"
With objMail.Configuration.Fields
.Item(strConfigurationField & "sendusing") = 2
.Item(strConfigurationField & "smtpserver") = "(SMTPサーバ名)"
.Item(strConfigurationField & "smtpserverport") = 465
.Item(strConfigurationField & "smtpusessl") = true
.Item(strConfigurationField & "smtpauthenticate") = 1
.Item(strConfigurationField & "sendusername") = "(メールアドレス)"
.Item(strConfigurationField & "sendpassword") = "(メールアカウントパスワード)"
.Item(strConfigurationField & "smtpconnectiontimeout") = 60
.Update
end With

objMail.Send

Set objMail = Nothing
Set objDrive =Nothing
Set objFolder = Nothing
Set objParm = Nothing
Set objFileSys = Nothing


これで番組名から自動予約されて録画された番組が、番組名のフォルダに格納されて、そのフォルダの一覧とディスク容量を記載したメールを送信する。ついでに同名ファイルが既にあればタイムスタンプをファイル名に追加して上書きを回避する。

ついでにDLNAサーバをLIVAに立ち上げて、TV(ブラビア)から直接見れるようにした。
ここ参考。


これで、AT-Xの番組に関してはwindows7のノートPCで録画し、LIVA(Xubuntu)にUSB3.0で接続されているHDD(1TB)に番組名でフォルダ分けされた状態で保存され、TVでその番組を見れるようになった。

秋アニメにはこの体制で入る。



Posted by wakin at 20:21 │Comments( 0 )
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。