TvRockの自動検索予約で便利に録画2
前回の記事でTvRockの自動検索予約に関して書きましたが、あれだけだと自分の思い通りの名前になってくれない事が結構あるのがわかると思います。
そこで、今回は録画後のコマンド実行について軽く書きます。
これは説明するまでもなく、録画後にコマンドを自動実行する事が出来る機能なんですが、主な使い方としては、
1.ファイルのリネーム
2.録画したTSファイルの処理
の2つになると思います。
■1:TSファイルをリネームするスクリプトを作成
リネームする方法はいくつかありますが、私の場合は自前でVBSを作成して使っています。
ネットでリネーム関連の処理を行うツールを公開している方も沢山いるので、それを使うのも良いと思います。
VBSの中身はテキストなので、テキストエディタがあれば誰でも作れます。
覚えておくと色々と役に立つこともあると思います。
そんなわけで簡単にリネーム用スクリプトの作り方を。
<例>
■第1話 → 第01話に置換
①TsRename.vbsという空のファイルを作成し、テキストエディタで開く
②以下の通りに記述する。
Option Explicit
Dim arg,i,j,Num1,Num2,objFso,objSrc,cntLen
Dim strSrcDirName,strSrcFName,strToFName,strSrcExtName
Num1 = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
Num2 = Array("00", "01", "02", "03", "04", "05", "06", "07", "08", "09")
Set objFso = CreateObject("Scripting.FileSystemObject")
'引数が無ければ終了
Set arg = WScript.Arguments
If arg.count = 0 Then
Set objFso = Nothing
WScript.Quit(1)
End If
'ファイルの存在確認
If Not objFso.FileExists(arg(0)) Then
Set objFso = Nothing
WScript.Quit(1)
End If
'ファイルパスを格納
Set objSrc = objFso.Getfile(arg(0))
strSrcDirName = objSrc.ParentFolder
strSrcFName = objFso.GetBaseName(arg(0))
strSrcExtName = objFso.GetExtensionName(arg(0)) '拡張子
strToFName = strSrcFName
Set objSrc = Nothing
'変換処理(話数)
For i = 0 To UBound(Num1)
strToFName = Replace(strToFName, "第" & Num1(i) & "話", "第" & Num2(i) & "話")
Next
'----------------------
' ファイル名の変換
'----------------------
Dim mvFromFile, mvToFile
mvFromFile = strSrcDirName & "\" & strSrcFName & "." & strSrcExtName
mvToFile = strSrcDirName & "\" & strToFName & "." & strSrcExtName
If Not mvFromFile = mvToFile Then
If objFso.FileExists(mvToFile) Then
'リネーム後のファイルが既に存在
Dim strBakFName,strNum
i = 0
Do
strNum = i
'0埋め
For j = 0 To 2 - Len(strNum)
strNum = "0" & strNum
Next
strBakFName = strSrcDirName & "\" & strToFName & "." & strNum & "." & strSrcExtName
If Not objFso.FileExists(strBakFName) Then
objFso.MoveFile mvToFile,strBakFName
Exit Do
End If
i = i + 1
Loop
End If
objFso.MoveFile mvFromFile, mvToFile
End If
Set objFso = Nothing
WScript.Quit(0)
③ファイルを保存する。
以上でリネーム用のスクリプトが出来ました。
色々と余計な処理が入っていますが、実際にやっている事は、Num1のi番目の要素をNum2のi番目の要素に置換した名前にリネームしているだけです。
話数変更の部分を好みに応じて追加していくと捗ると思います。
■2:録画後にスクリプトを実行する
まず、TvRockの設定→プロセスタブを開きます。

「コマンドを実行する」にチェックを入れ、以下の通りに入力します。
TN:"実行したいスクリプトのフルパス" "引数"
TNはチューナーデバイス録画終了後に実行する事を意味します。
引数は「%1」なら録画保存したファイルのフルパスが代入されます。
なぜか、参考画像にあるスクリプトのパスがaviutlのパスになっているのは気にしてはいけませんw
コマンドの詳細はTvRockのヘルプを参照してください。
これで録画後に自動的にファイル名がリネームされるようになります。
■3:TSファイルから余計な物を削除する
私の場合、録画したTSファイルにTsSplitterというツールを通しています。
TsSplitterを使用する理由は下記の通りとなります。
①TSファイルのサイズが小さくなる
TSファイルはサイズが非常に大きいという欠点があります。
しかし、TsSplitterを通すことにより、不要なワンセグ映像やSD映像を削除する事が出来ます。
これにより、ファイルサイズが小さくなります。
②mp4化する際の編集が楽
TSファイル内の番組情報を元に、本編と前後のCMでは別ファイルにしてくれるので、編集する際に開始位置を探さなくて良いので少し楽になります。
③映像サイズが混在した場合の対策
録画を開始した時点の映像がSD映像で、番組本編がHD映像だった場合、ファイル全体をSD映像として認識されてしまうので、編集どころか、再生すら出来なくなる事があります。
これは、前番組が昔のアニメとかでSD映像だった場合などで、稀に起こります。
前述の通り、番組情報を元にファイルを分割する事により、前番組の影響を受けなくなるので、再生、編集も問題なく出来るようになります。
ダウンロードはこちらから:DTV関係ファイル置き場
■使い方
①DLしたファイルを適当なフォルダに解凍します。
②TsSplitterGUI.exeを起動します。
③変換ファイルを選択し、下記の通りにチェックを入れて変換ボタンをクリックします。

④ファイルがいくつかに作られたと思います。

上の画像の例だと、「~_HD」の付くファイルがTsSplitterを使って取り出したファイルになります。
該当するファイルが3つありますが、これはTS内にある番組情報等を使用してファイルを切り出しているため
前後の余計なCMが切り出されています。
今回の場合だと
番組開始前のCM → ~_HD.ts
番組本編 → ~_HD-1.ts
番組終了後のCM → ~_HD-2.ts
になります。
なので、本編以外のファイルは削除してしまってOKです。
で、ファイルサイズを比較してみると約600M小さくなっています。
キー局では30分番組で1G縮んだりします。
■4:もう一歩進んだ使い方
TsSplitterは便利ですが、毎回手動で実行するのは面倒なので、これも自動化してしまいます。
TsSplitterにはGUI版とコマンドライン版の「TsSplitter.exe」の2つが同梱されています。自動化する場合は、このコマンドライン版を使って、リネーム用スクリプトに組み込みます。
引数はGUI版の黒い部分で確認出来るので、それを引数にします。
細かい記事を起こすと長くなるので省きます…。すいません。
代わりに、私が使っているスクリプトを置いておくので、詳細が知りたい方は参考にどうぞ。適当に作ったので、バグとかあると思いますが、気にしないで下さい。
TsRename.vbs
■使い方
①右クリックからファイルを保存
②保存したファイルの拡張子をVBSに変更
③テキストエディタで中身を開き、TsSplitter.exeのパスをフルパスで設定
④その他、必要に応じてオプションを設定
■起動方法
・引数に処理したいファイルをフルパスで指定(複数ファイル指定には未対応)
→D&Dでも可
■処理内容
①色々とリネーム
②TsSplitterを実行
③一番大きいファイルのみを取り出し、それ以外を削除
→一応、TsSplitterを通す前のファイルはゴミ箱に入る範囲内でゴミ箱に移動するようにしてあります…
④取り出したファイルを①でリネームした名前に変更
■注意点
・余計なファイルは残したくない関係で、TsSplitterで出力されるファイルとかは削除されるので、意図しないファイルが削除される事があったらごめんなさい。
・XP以外での動作確認もしていないので、その他の環境でちゃんと動くかも分かりません。
・SD映像のみの放送を録画した場合はファイルその物が出力されないかも(未確認)
・改変その他勝手にやってもらって構いませんが、何が起きても全て自己責任でお願いします。
【あとがき】
他に良さそうなツールがあるのに、わざわざ自前で無駄なツール作ってるのはただの自己満足ですので、突っ込まないでください。
私の場合、録画だけして見たら削除する物と、エンコードして保存しておく場合と分けているため、TS作成までを自動化しています。
音声出力やエンコードまで自動化したい方は他にいくらでも使い勝手の良いツールがあるので、そちらを使用してください。
そこで、今回は録画後のコマンド実行について軽く書きます。
これは説明するまでもなく、録画後にコマンドを自動実行する事が出来る機能なんですが、主な使い方としては、
1.ファイルのリネーム
2.録画したTSファイルの処理
の2つになると思います。
■1:TSファイルをリネームするスクリプトを作成
リネームする方法はいくつかありますが、私の場合は自前でVBSを作成して使っています。
ネットでリネーム関連の処理を行うツールを公開している方も沢山いるので、それを使うのも良いと思います。
VBSの中身はテキストなので、テキストエディタがあれば誰でも作れます。
覚えておくと色々と役に立つこともあると思います。
そんなわけで簡単にリネーム用スクリプトの作り方を。
<例>
■第1話 → 第01話に置換
①TsRename.vbsという空のファイルを作成し、テキストエディタで開く
②以下の通りに記述する。
Option Explicit
Dim arg,i,j,Num1,Num2,objFso,objSrc,cntLen
Dim strSrcDirName,strSrcFName,strToFName,strSrcExtName
Num1 = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
Num2 = Array("00", "01", "02", "03", "04", "05", "06", "07", "08", "09")
Set objFso = CreateObject("Scripting.FileSystemObject")
'引数が無ければ終了
Set arg = WScript.Arguments
If arg.count = 0 Then
Set objFso = Nothing
WScript.Quit(1)
End If
'ファイルの存在確認
If Not objFso.FileExists(arg(0)) Then
Set objFso = Nothing
WScript.Quit(1)
End If
'ファイルパスを格納
Set objSrc = objFso.Getfile(arg(0))
strSrcDirName = objSrc.ParentFolder
strSrcFName = objFso.GetBaseName(arg(0))
strSrcExtName = objFso.GetExtensionName(arg(0)) '拡張子
strToFName = strSrcFName
Set objSrc = Nothing
'変換処理(話数)
For i = 0 To UBound(Num1)
strToFName = Replace(strToFName, "第" & Num1(i) & "話", "第" & Num2(i) & "話")
Next
'----------------------
' ファイル名の変換
'----------------------
Dim mvFromFile, mvToFile
mvFromFile = strSrcDirName & "\" & strSrcFName & "." & strSrcExtName
mvToFile = strSrcDirName & "\" & strToFName & "." & strSrcExtName
If Not mvFromFile = mvToFile Then
If objFso.FileExists(mvToFile) Then
'リネーム後のファイルが既に存在
Dim strBakFName,strNum
i = 0
Do
strNum = i
'0埋め
For j = 0 To 2 - Len(strNum)
strNum = "0" & strNum
Next
strBakFName = strSrcDirName & "\" & strToFName & "." & strNum & "." & strSrcExtName
If Not objFso.FileExists(strBakFName) Then
objFso.MoveFile mvToFile,strBakFName
Exit Do
End If
i = i + 1
Loop
End If
objFso.MoveFile mvFromFile, mvToFile
End If
Set objFso = Nothing
WScript.Quit(0)
③ファイルを保存する。
以上でリネーム用のスクリプトが出来ました。
色々と余計な処理が入っていますが、実際にやっている事は、Num1のi番目の要素をNum2のi番目の要素に置換した名前にリネームしているだけです。
話数変更の部分を好みに応じて追加していくと捗ると思います。
■2:録画後にスクリプトを実行する
まず、TvRockの設定→プロセスタブを開きます。
「コマンドを実行する」にチェックを入れ、以下の通りに入力します。
TN:"実行したいスクリプトのフルパス" "引数"
TNはチューナーデバイス録画終了後に実行する事を意味します。
引数は「%1」なら録画保存したファイルのフルパスが代入されます。
なぜか、参考画像にあるスクリプトのパスがaviutlのパスになっているのは気にしてはいけませんw
コマンドの詳細はTvRockのヘルプを参照してください。
これで録画後に自動的にファイル名がリネームされるようになります。
■3:TSファイルから余計な物を削除する
私の場合、録画したTSファイルにTsSplitterというツールを通しています。
TsSplitterを使用する理由は下記の通りとなります。
①TSファイルのサイズが小さくなる
TSファイルはサイズが非常に大きいという欠点があります。
しかし、TsSplitterを通すことにより、不要なワンセグ映像やSD映像を削除する事が出来ます。
これにより、ファイルサイズが小さくなります。
②mp4化する際の編集が楽
TSファイル内の番組情報を元に、本編と前後のCMでは別ファイルにしてくれるので、編集する際に開始位置を探さなくて良いので少し楽になります。
③映像サイズが混在した場合の対策
録画を開始した時点の映像がSD映像で、番組本編がHD映像だった場合、ファイル全体をSD映像として認識されてしまうので、編集どころか、再生すら出来なくなる事があります。
これは、前番組が昔のアニメとかでSD映像だった場合などで、稀に起こります。
前述の通り、番組情報を元にファイルを分割する事により、前番組の影響を受けなくなるので、再生、編集も問題なく出来るようになります。
ダウンロードはこちらから:DTV関係ファイル置き場
■使い方
①DLしたファイルを適当なフォルダに解凍します。
②TsSplitterGUI.exeを起動します。
③変換ファイルを選択し、下記の通りにチェックを入れて変換ボタンをクリックします。
④ファイルがいくつかに作られたと思います。
上の画像の例だと、「~_HD」の付くファイルがTsSplitterを使って取り出したファイルになります。
該当するファイルが3つありますが、これはTS内にある番組情報等を使用してファイルを切り出しているため
前後の余計なCMが切り出されています。
今回の場合だと
番組開始前のCM → ~_HD.ts
番組本編 → ~_HD-1.ts
番組終了後のCM → ~_HD-2.ts
になります。
なので、本編以外のファイルは削除してしまってOKです。
で、ファイルサイズを比較してみると約600M小さくなっています。
キー局では30分番組で1G縮んだりします。
■4:もう一歩進んだ使い方
TsSplitterは便利ですが、毎回手動で実行するのは面倒なので、これも自動化してしまいます。
TsSplitterにはGUI版とコマンドライン版の「TsSplitter.exe」の2つが同梱されています。自動化する場合は、このコマンドライン版を使って、リネーム用スクリプトに組み込みます。
引数はGUI版の黒い部分で確認出来るので、それを引数にします。
細かい記事を起こすと長くなるので省きます…。すいません。
代わりに、私が使っているスクリプトを置いておくので、詳細が知りたい方は参考にどうぞ。適当に作ったので、バグとかあると思いますが、気にしないで下さい。
TsRename.vbs
■使い方
①右クリックからファイルを保存
②保存したファイルの拡張子をVBSに変更
③テキストエディタで中身を開き、TsSplitter.exeのパスをフルパスで設定
④その他、必要に応じてオプションを設定
■起動方法
・引数に処理したいファイルをフルパスで指定(複数ファイル指定には未対応)
→D&Dでも可
■処理内容
①色々とリネーム
②TsSplitterを実行
③一番大きいファイルのみを取り出し、それ以外を削除
→一応、TsSplitterを通す前のファイルはゴミ箱に入る範囲内でゴミ箱に移動するようにしてあります…
④取り出したファイルを①でリネームした名前に変更
■注意点
・余計なファイルは残したくない関係で、TsSplitterで出力されるファイルとかは削除されるので、意図しないファイルが削除される事があったらごめんなさい。
・XP以外での動作確認もしていないので、その他の環境でちゃんと動くかも分かりません。
・SD映像のみの放送を録画した場合はファイルその物が出力されないかも(未確認)
・改変その他勝手にやってもらって構いませんが、何が起きても全て自己責任でお願いします。
【あとがき】
他に良さそうなツールがあるのに、わざわざ自前で無駄なツール作ってるのはただの自己満足ですので、突っ込まないでください。
私の場合、録画だけして見たら削除する物と、エンコードして保存しておく場合と分けているため、TS作成までを自動化しています。
音声出力やエンコードまで自動化したい方は他にいくらでも使い勝手の良いツールがあるので、そちらを使用してください。