fc2ブログ

PREV | PAGE-SELECT | NEXT

≫ EDIT

QSVEncC+avisynthで高速自動エンコードする 改良編

前回で最後と言いながら続きです。とりあえず録画終了後自動でエンコードしてくれるのですが、問題があります。
その2で書いたbatファイルはSAR4:3としているので、
1440x1080の地デジはいいですが、1920x1080のBSやCSだと比率が狂ってしまうのです。
地デジかBSかを分岐する方法を思いついたので書いておきます。
スポンサーリンク



録画ファイルの管理
 
まず自分の録画ファイルの管理について箇条書きで書いておきます。
・すべてのTSは一時フォルダに置く
・後処理が終了するとTSとmp4が一時フォルダに残る(あとlogファイル)
・TSはmp4確認後に削除する
・mp4は番組名ごとに作ったフォルダにbatファイルで自動振り分け
avisynthとか使い始めたのが久しぶりと言うこともあり、殆ど問題がないといえるまでTSは自分で削除します。
大丈夫そうなら、QSVEncC.batの残骸ファイルにTSも記述しようかなと思っています。

↑春アニメやって大丈夫そうなので削除する事にしました。その2に追記してあります。

batファイルでのmp4自動振り分けは、いつか記事にしておこうかなと思います。


方法1.地デジ・BS全てエンコードする場合
早速書いていきましょう。TVRockの後処理コマンドを直に記述せずに、
新しく作るbatファイルを呼び出すようにしました。そのbatファイルが以下です。TVRock.batとしました。
@echo off
rem ==============================================
rem              変数
rem ==============================================
set SAVE=<一時フォルダ>
rem ### QSVEncC ###
set QSVEncC="C:\avisynth\QSVEncC.bat"
rem ### TsSplitter ###
set TsSplitter="C:\avisynth\program\TsSplitter\TsSplitter.exe"
rem ### SCRename ###
set SCRename="C:\avisynth\program\SCRename\SCRenameTvRock.bat"

rem ==============================================
rem            エンコード処理
rem ==============================================
call %TsSplitter% -EIT -SD -1SEG -OUT "%SAVE%" -WAIT2 "%~1"
if exist "%SAVE%\%~n1_HD.ts" del "%~1"
call %QSVEncC% "%SAVE%\%~n1_HD.ts"
call %SCRename% "%SAVE%\%~n1_HD.ts"
call %SCRename% "%SAVE%\%~n1_HD.mp4"
exit

冒頭でも書いたとおり、その2で書いたbatではsarは4:3と書きましたが、
コメントによりsar -16:-9とすると、DAR 16:9と同じ意味になり、地デジとBS両方対応出来るみたいです。

なのでQSVEncCの映像エンコード設定にあるsar 4:3をsar -16:-9に修正して欲しいです。m(_ _)m
QSVEncC.batを地デジ用とBS用とで2つ作る必要ないのでスマートですね。

方法2.地デジとBSの処理を分けたい場合
 
@echo off

rem ==============================================
rem           変数
rem ==============================================
set SAVE=<一時フォルダ>
set MOVE=<移動フォルダ>

rem ### QSVEncC ###
set QSVEncC="C:\avisynth\QSVEncC.bat"
rem ### TsSplitter ###
set TsSplitter="C:\avisynth\program\TsSplitter\TsSplitter.exe"
rem ### SCRename ###
set SCRename="C:\avisynth\program\SCRename\SCRenameTvRock.bat"

rem ###BS/CS###
set BS1=-TBS
set BS2=BS11
set BS3=BS-

echo ****************************************************************
echo              BSファイル振り分け           
echo ****************************************************************
move "%SAVE%\*%BS1%*_HD.ts" "%MOVE%"
move "%SAVE%\*%BS2%*_HD.ts" "%MOVE%"
move "%SAVE%\*%BS3%*_HD.ts" "%MOVE%"


if not exist "%SAVE%\%~n1_HD.ts" goto BS

echo ****************************************************************
echo              地デジ処理開始
echo ****************************************************************
call %TsSplitter% -EIT -SD -1SEG -OUT "%SAVE%" -WAIT2 "%~1"
if exist "%SAVE%\%~n1_HD.ts" del "%~1"
call %QSVEncC% "%SAVE%\%~n1_HD.ts"
call %SCRename% "%SAVE%\%~n1_HD.ts"
call %SCRename% "%SAVE%\%~n1_HD.mp4"
exit

:BS
echo ****************************************************************
echo                BS処理開始
echo ****************************************************************
rem           (処理なし。移動するだけ)
exit

こっちは地デジとBSを処理分けしたい場合のものです。必要ないならいりません。
個人的にBS放送は録画漏れ対策なので、地デジがちゃんと録画されているなら削除しています。
なので、BSはエンコードせずに別フォルダに分けてあった方が無駄が少なくいいかなと思います。

まず流れの説明を。
1.録画したファイルは全て共通の処理を実行し、元のTSは削除
2.TsSplitterで出力したTSのファイル名にBS・CSの局が含む場合、指定フォルダに移動する
3.もし、一時フォルダにTsSplitterで出力したTSのファイルが無いならBS処理へジャンプ
4.あるならそのままTS処理実行
簡単にいえば一時フォルダにあれば地デジ、無いならBS・CSということになります。

変更する部分はいつもどおり基本的に青い部分のみです。
変数MOVEはBSやCSなどを移動して置くフォルダです。

TsSplitterとかは普通に変数設定してください。

BS1やBS2とかですが、これが局名を表す部分なので移動したい局名を変数セットして下さい。
BS3まで作ってますが、増やしたら下の『BSファイル振り分け』でそれを処理するコマンドも追加です。

上のbatではBS処理には何も記述せず、移動だけになっているので、
エンコードしたい場合は、地デジ処理の内容をコピペして下さい。


作ったbatはavisynthフォルダに置いて、TVRockの後処理コマンドで呼び出して上げれば良いです。スッキリ!



とりあえずこんな感じで終わりです。これで多分無駄なエンコードは無くなるでしょう。
まぁもしおかしい所や書き換えた方が良い所がわかったら書き直します。
それではまた~

関連記事
スポンサーリンク

| エンコード | 16:38 | comments:7 | trackbacks:0 | TOP↑

非常に参考になります。
もし可能であれば「Avisynth+バッチファイル+αで簡単にアニメ高速エンコード」に記載のようにインタレ解除も行うようなスクリプトの解説もご一考下さい。

| かとう | 2013/04/15 01:32 | URL | ≫ EDIT

かとうさん コメント有難うございます。
インタレ解除となるとavsにスクリプトを追加する事になるので、

#インタレ解除・逆テレシネ
TDeint(mode=0, order=1, type=3, tryweave=true)
TDecimate(mode=1, hybrid=0)

をその2で書いたDelayAudioとreturn lastの間にでも入れてやればできると思います。
勿論、必要なTDeint.dllとTIVTC.dllをプラグインフォルダに入れる必要はありますが。
もし音ズレしたらmp4boxのオプションでフレームレート指定してるのが問題かも知れません。
検証はしてないので確証はありません。

ただ、自分がインタレ保持としているのは、
・avisynth,インタレ解除について知識不足
・QSVの速度が損なわれる
・自動インターレース解除は完璧じゃない(らしい)

と言うのがあります。
でも、インタレ解除すれば容量の削減ができるので気にはなります。

まぁ、少し調べて良かったら、記事を書く…かもしれません。^^;

| 管理人 | 2013/04/16 01:14 | URL | ≫ EDIT

とても参考になりました

非常に丁寧に解説されており、TVチューナ導入初心者兼真性情弱の私にとって大変ありがたい情報でした。

何より目的までのプロセスが明確なのと必要なソフトウェアの説明と導入目的が大変わかりやすく、おかげ様でTSファイルエンコードの流れがイメージ出来ました。

筆者様のサイト情報を参考にして自分の環境でもTS録画~エンコードまでを自動化する事ができました。

今回は一言御礼差し上げたく思い投稿しました。


今後も更新を楽しみにしております。

| shurake0211 | 2013/04/22 14:30 | URL |

shurake0211さん コメントありがとうございます。

自動化できましたか!それは良かったです。
煩雑な感じで読みづらそうと思ってましたが安心しました。

あまり頻繁に更新はしないのですが、たまに覗いてただけると嬉しい限りです。

| 管理人 | 2013/04/22 21:04 | URL | ≫ EDIT

先日bassaudio.dllでコメントさせていただきました。

set qsv=--y4m --output-res 720x540 --sar -16:-9 -i - -o %output_264%

のように、1920x1080のテレビであれば、sar -16:-9と設定すれば、darと解釈されるので、地デジ、BSどちらでも対応できる気がします。

| | 2013/05/05 10:10 | URL |

『sar -16:-9』とすると、DAR16:9と同じ意味になるんですか!知らなかった…
実際エンコードしてみたところ、問題なかったです。
ふと、直接DARでも良さそうと思いましたけどx264にはDARが無いみたいですね。

これなら分岐も必要なくbatファイルは1つだけでよさそうですね。
たびたび情報ありがとございました。

| 管理人 | 2013/05/05 13:31 | URL | ≫ EDIT

承認待ちコメント

このコメントは管理者の承認待ちです

| | 2020/10/03 08:07 | |















非公開コメント

http://higitune.blog106.fc2.com/tb.php/102-bca3a245

PREV | PAGE-SELECT | NEXT