自動TS→H.264変換設定について(3)
TVRockと連携して自動でTS→H.264変換という記事に、さらにいくつかコメントが寄せられていましたので、ここで整理してみようかと思います。
- Q. Core i5などはスレッド数は8に変更した方がよいのか
- A. ffmpegの-threads オプションは、CPUのコア数分だけエンコードスレッド数を増やし、処理速度を高速化するオプションのようです。ただ、HTテクノロジー(ハイパー・スレッディング・テクノロジー)が有効になるCore i7では、1つのコアで2スレッドを動かすことができる(つまり物理的に4コアあれば8スレッドまで実行可能である)ため、-threads 8にすると、多少速度アップするかもしれません。実は詳しく検証してみたことがないため、実際のところ速くなっているのかはよくわかりません、ごめんなさい(笑。
Core i5についてですが、型番によってはHTテクノロジー非搭載のものもあるため、ご使用のCPUの型番を確認した上で設定を変更してみて、パフォーマンスを計測してみると良いかもしれません。CPU(コア)数以上を指定しても速度は変わらないという情報もあり、大きな数字にしてもパフォーマンスアップは期待薄でしょう。あとは気分の問題ということで(笑。
- Q. 自動生成されるTSファイルを削除し、MP4ファイルのみ残すことは可能か? また、TsSplitterのTSファイルの出力先と、BonTsDemuxのMP4ファイルの出力先を変えることは出来るか?
- A. taskenc.vbsのスクリプトが実行されると、幾つかのTSファイルが生成されますが、このスクリプトファイルの内容を一部変更することで、対応が可能です。taskenc.vbs 改造のサイト情報をもとに、ちょこっと改造してみました。「HD」という文字列の入ったTSファイルとMP4ファイルをそれぞれ別のフォルダに生成し、オリジナルのTSファイルを削除するスクリプトへの変更例です。参考までにどうぞ。ただ、MP4変換が成功しているかどうかを検証する機能は入れていないため、オリジナルファイルを含め、不要なTSファイルが変換後全て削除されてしまいます。MP4変換に失敗したときは取り返しがつきませんので、HDDの空き容量が十分あることや、安定動作するかどうかを必ずご確認の上、ご使用ください(^^;。ということで、自己責任でお願いいたします。
以下、taskenc.vbsの追加&変更行のみ記載します(左側の3桁の数字は行番号です)。
005: Dim gsSpliter,gsSpliterOpt,gsSpliterOut,gsMediaCoder,gsMediaCoderOpt,gsMediaCoderOut,gsTargetExt,gsEncodeFile '←この行を変更 023: gsSpliter = "D:\Program Files (x86)\TsSplitter Ver1.23\TsSplitter.exe" '←この行を変更 026: gsMediaCoder = "D:\Program Files (x86)\bontsdemux1.10+10k7\BonTsDemux.exe" '←この行を変更 032: gsSpliterOpt = "-SD2 -SD3 -1SEG -WAIT2" '←この行を変更 033: gsSpliterOut = "J:\TV" '←この行を追加(ここにはTsSplitterの出力先フォルダを指定する) 034: if gsSpliterOut <> "" then '←この行を追加 035: gsSpliterOpt = gsSpliterOpt & " -OUT """ & gsSpliterOut & """ " '←この行を追加 036: End if '←この行を追加 051: gsMediaCoderOpt = "-encode X264_mp4 -rf64 -vf -start -quit " '←この行を変更 052: gsMediaCoderOut = "J:\Enc" '←この行を追加(ここにはBonTsDemuxの出力先フォルダを指定) 185: Dim aFiles,sTmpFileName,sOutFileName,sTmpFileName_org '←この行を変更 189: sEncodeFile = GetLargestFile(gsSpliterOut & "\" & oFs.GetBaseName(sTarget),gsTargetExt,aFiles) '←この行を変更 206: sTmpFileName_org = Left(oFs.GetTempName(),8) '←この行を追加 207: sTmpFileName = gsSpliterOut & "\" & sTmpFileName_org & ".ts" '←この行を変更 217: sTmp = sTmp & " -i """ & gsSpliterOut & "\" & sTmpFileName_org & ".ts" & """ -o """ & gsMediaCoderOut & "\" & sTmpFileName_org '←この行を変更 222: sTmp = "cmd /c move """ & gsMediaCoderOut & "\" & sTmpFileName_org & gsBatModeOutExt & """ """ & gsMediaCoderOut & "\" & oFs.GetBaseName(sTarget) & gsBatModeInExt & gsBatModeOutExt & """" '←この行を変更 246: iLen = UBound(aFiles) '←この行を有効化 247: For i = 0 to iLen '←この行を有効化 248: if (aFiles(i) <> sEncodeFile) and (aFiles(i) <> sTarget)then '←この行を有効化 249: sTmp = "cmd /c del """ & aFiles(i) & """" '←この行を変更 250: WriteLog("ファイル削除:" & sTmp) '←この行を有効化 251: DoIt(sTmp) '←この行を有効化 277: WriteLog(sEncodeingFile & "がエンコード中ですので1分待ちます。") '←この行を変更 282: WScript.Sleep 1 * 60 * 1000 '←この行を変更 312: '処理済み元ファイルの削除 '←元ファイルを削除する場合は、この行を追加 313: If ( oFs.FileExists(sTarget) ) Then '←元ファイルを削除する場合は、この行を追加 314: WriteLog("ファイル削除:" & sTarget) '←元ファイルを削除する場合は、この行を追加 315: oFs.DeleteFile(sTarget) '←元ファイルを削除する場合は、この行を追加 316: End if '←元ファイルを削除する場合は、この行を追加