Hatena::ブログ(Diary)

おにぃちゃんの日記 このページをアンテナに追加 RSSフィード

2010-01-11

[][]TVRockと連携して自動でTS→H.264変換

 する方法を今までずっと模索していたのですが、やっといいやり方が見つかったかもしれない。今まではMediaCoderというフリーソフトを使って試していたのですが、このソフトがなかなかのクセモノで、バグが多いのか、素直に動いてくれない(笑。2chスレとかでも頻繁に情報交換されており、また毎日のように最新バージョンが上がっているので、今後期待したいところではあるのですが…。Cuda対応ってところは魅力的なんですけどねー。

 というわけで、今回はうまく動作しないMediaCoderではなく、BonTsDemuxを使用します。生成されたMP4ファイルは元のTSファイルの1/5以下の容量に収まり、かつアニメの品質は24インチフルHD液晶で全画面表示させても若干ぼやける程度で、さほど遜色なく見られる品質なので、これで十分かと思います。しかも今のところ音ズレもないのでいい感じ。以下、私のための備忘録(笑。用意するものは以下の通り。

2011.09.17追記:「BonTsDemux v1.10+10k7+nogui+es+fix04 FFmpeg 0.6.1 (再々)」以降に同梱しているFFmpeg0.6.1はlibfaacが使えないため、確認していませんが動作しない可能性があります。質は良くないようですが、FFmpeg内蔵のAACエンコーダを使う場合は、下のコメント欄にあるようにすればできるようです。情報提供ありがとうございます>れんと様

※実はtaskenc.vbsMediaCoder用に有志の方が作ってくださった自動実行用ファイルのようなのですが、これを活用させていただきます(笑。

1. TVRockとTsSplitter、BonTsDemuxをダウンロードして解凍し、それぞれProgram Filesフォルダなど、適当なフォルダに配置します。

2. BonTsDemuxのフォルダ内にあるcap_sts_sea.iniファイルをメモ帳などで開き、以下の内容を追加します。

X264_mp4 =-f mp4 -vcodec libx264 -aspect 16:9 -vtag mp4v -crf 24 -flags2 dct8x8 -level 51 -acodec libfaac -ac 2 -ar 48000 -ab 128k -s 1280x720 -y -threads 8 -coder 1 -deinterlace -top -1 -qmin 10 
X264_mp4_EXT =mp4

ちなみに、上記設定の-crfの数値はアニメで500MB程度に収めるため24に設定してみましたが、この数値を下げると品質がアップするようです(その分ファイル容量は大きくなります)。29分録画したアニメですと、もとのTSファイルがほぼ3GB程度なのですが、この値を24にすると出来上がるMP4ファイルは500〜600MB程度に、20にすると1GB程度になるみたいです。また、私の使用PCは4コア(論理8コア)あるため、スレッド数は8にしてます。これでかなりCPU使用効率が良くなり、速度が上がっているようです。

3. taskenc.vbsファイルをTVRockフォルダ内に配置します。さらにtaskenc.vbsファイルをメモ帳などで開き、以下の部分を変更します(パスは環境に応じて変更してください)。

23: gsSpliter    = "D:\Program Files (x86)\TsSplitter Ver1.23\TsSplitter.exe" '←変更
…(中略)…
26: gsMediaCoder = "D:\Program Files (x86)\bontsdemux1.10+10k7\BonTsDemux.exe" '←変更
…(中略)…
47: gsMediaCoderOpt = "-encode X264_mp4 -rf64 -vf -start -quit -i " '←変更

ちなみに同時エンコードを避けるためのWaitStart(aTime)関数内の待機時間がもともと10分になっていたので、1分と短めに変更しています。

271: WriteLog(sEncodeingFile & "がエンコード中ですので1分待ちます。") '←変更
…(中略)…
276: WScript.Sleep 1 * 60 * 1000 '←変更

4. TVRock設定の「プロセス」タブで「コマンドを実行する」にチェックを入れ、以下の内容を入れます(taskenc.vbsのパスは環境に応じて変更してください)。

TN:start "Encodeing(%4)" /min /LOW cscript "D:\Program Files (x86)\TvRock\taskenc.vbs" "%1"

設定はこれで完了…だったと思う(笑。このtaskenc.vbsスクリプトを単体で動作させる場合ですが、Windows Vista以降の場合、スタートメニューを開いて、入力窓から「cmd.exe」と入力し、開いたコマンドプロンプト画面上で以下のコマンドを入力するだけです(taskenc.vbsのパスは環境に応じて変更してください)。

例:
cscript "D:\Program Files (x86)\TvRock\taskenc.vbs" "d:\tv\はなまる幼稚園 #1 はなまるな入園式/はなまるなおかあさん.ts"

ちなみに、はなまる幼稚園第1話のTSファイルは3.56GBでしたが、変換後のMP4ファイルは526MBになりました(笑。また、私のCore i7 860 3.8GHz/Windows 7 64bitマシンでの変換速度ですが、ffmpegの変換部分のみ(BonTsDemux)では20分程度でした。しばらくこの環境で試してみることにします。

【参考リンク】

ArthurArthur 2010/01/16 05:36 はじめまして。
自分も録画後に自動変換したかったので、大変参考になりました。
ブログの方も今後拝見させていただきますので、また何か改善なり最新情報などありましたら、是非お世話になりたいので、よろしくお願い致します。

MorohaMoroha 2010/02/15 09:27 はじめまして。
TVRock使っていて、何とかTS以外に自動変換出来ないかと探していてここに
たどり着きました。
本ページ通りの設定にて利用させて頂きました。
有難うございます。

yosyos 2010/04/04 22:33 はじめまして。
エンコード中ですので1分待ちます。
でループしちゃいます、、
何が原因でしょうか??
ご指導下さいませ。

yosyos 2010/04/04 22:45 上、解決しました。
でも、
C:\Program Files\TvRock\taskenc.vbs(320, 7) (null): このアプリケーションの構成が
正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度イ
ンストールすることにより問題が解決する場合があります。
となります。
なぜでしょう??

れんとれんと 2010/12/28 08:29 はじめまして。
BonTsDemux 1.10 mod 10k7+nogui+es+fix05ですと、ffmpegでエラーとなります。ffmpegのバージョンが違うようです。

cap_sts_sea.iniの設定をいじったところ、"-vpre hq"を追加し、"-acodec libmp3lame"にすると動くようになりました。以下にその行を書きます。
X264_mp4 =-f mp4 -threads 0 -vcodec libx264 -aspect 16:9 -vpre hq -vtag mp4v -crf 24 -flags2 dct8x8 -level 51 -acodec libmp3lame -ac 2 -ar 48000 -ab 128k -s 1280x720 -y -coder 1 -deinterlace -top -1 -qmin 10

ご参考まで。

taktak 2011/03/31 11:19 はじめまして。
オプションに -sound 1 にして、主音声のみでの自動エンコードをやろうとすると、止まってしまいます。
すみません、教えてください。

hiroshihiroshi 2011/05/27 19:44 はじめまして。
bontsdemuxのエンコード後、出力先を指定する方法はありますか?
よろしければ、スクリプトを教えてください。
よろしくお願いします。

さくらすさくらす 2013/01/28 21:12 >れんとさん
当方バッチ処理の途中で、「出力ファイルが見つかりません」というエラーで立ち往生していましたが、貴殿の書き込みのお陰で先に進むことが出来ました。
ありがとうございました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元

航空券 債務整理