録画のあとに自動で音ズレなしでエンコードしたい
TVRock の場合、 TN: に続けてコマンドを書く。TNの他にも記述方法が色々あるのでヘルプをよく読むと役立つ。
BonCasTimer の場合は、bat ファイルを記述し、録画後実行batに登録する。ただし、bat の場合は、フルパスに半角スペースが入っていないと失敗することがある。よくわからないが、対策として ts 出力フォルダ名に半角スペースを含ませておく。
コマンドと bat の内容について
複数の処理を順番に行うことができ、さらにキュー機能もついている V-AutoEncoder を使う。 V-AutoEncoder での処理内容について
MediaCoder の出力フォルダの設定、プリセット作成をしておく。(mediacoder-preset.xml) 1.TSSplitter で分解、一番大きいファイルを使う。 2.分解した TS ファイルを BonTsDemux で Mpeg2PS に変換(音ズレ対策) 3.Mpeg2PS を MediaCoder にプリセットと一緒に渡して H264 にエンコードする。 おまけ.指定したフォルダに move コマンドで移動させる。
*音ズレ対策に色々試しましたが、これが一番良かったです。 試したこと: ・生の TS を MediaCoder に渡す。 -> 意味なかった。 ・分解しただけの TS を以下略。 ・音の delay を適当に設定 -> 一律にしか設定出来ないので、自動エンコードには向いていない。 ・動画と音声を分離して、MediaCoder に渡す。 -> 意味なかった。 ・動画と音声を分離して、動画と音声を別々にエンコードし、MP4Box でまとめる。 -> 意味なかった。
塵も積ればほこりと成る V-AutoEncoderでTVRockからH264へ自動エンコードする手順 を参考にさせてもらって、以下のように作成しました。
X:\tvenc_temp は、エンコードを一時的に行う場所です。適当に変更してください。 X:\tvenc はエンコードファイル移動先です。適当に変更してください。 hoge の部分は適当にあわせてください。
処理中に次の動画を受け取るとキューに溜める仕様ですが、ドラッグ&ドロップは1ファイルずつのみで複数ファイルを同時にドロップは出来ません。ひとつずつドロップしましょう。そして、キューに溜めた場合、move が先に実行されてしまうので、エンコードを一時的に行うフォルダにエンコードした結果ファイルが残ってしまいます。手動で移動するか、なんとかして V-AutoEncoder に move も組み込みたいところ。
BonTsDemux の cap_sts_sea.ini に以下を追記。
MPEG2PS_AC3 =-f dvd -vcodec copy -aspect 16:9 -acodec ac3 -ar 48000 -ab 192k -vol 256 -y
MPEG2PS_AC3_EXT = mpg
mediacoder-preset.xml(24fps, 実写の場合は30fpsに変更する。)UTF8 で保存する。あんまり設定を変更すると音ズレするので注意。どれが原因かは不明。とりあえず音声のサンプリングは変更しないほうが吉。
<?xml version="1.0" encoding="UTF-8"?>
<MediaCoderPrefs><node key="overall.ui.mode">Advanced</node><node key="overall.ui.language">15</node><node key="overall.ui.stats">Never</node><node key="overall.ui.expertView">Console Output</node><node key="overall.ui.param">750,732,602,146</node><node key="overall.ui.noWelcome">5038</node><node key="overall.task.destdir">X:\tvenc_temp</node><node key="overall.subtitle.mode">Disabled</node><node key="overall.subtitle.slang">jpn</node><node key="overall.audio.channels">Original</node><node key="overall.audio.autoSource">false</node><node key="overall.audio.autoEncoder">false</node><node key="overall.audio.source">FFmpeg</node><node key="overall.audio.format">LC-AAC</node><node key="overall.audio.encoder">Nero Encoder</node><node key="overall.video.csp">Original</node><node key="overall.video.mode">VBR</node><node key="overall.video.autoSource">Disabled</node><node key="overall.video.source">FFmpeg</node><node key="overall.video.autoEncoder">false</node><node key="overall.preview.mode">Off</node><node key="audioenc.aacplus.mode">Stereo</node><node key="audioenc.aacplus.type">LC-AAC</node><node key="audioenc.nero.quality">60</node><node key="videoenc.x264.profile">Main</node><node key="videoenc.x264.level">40</node><node key="videoenc.x264.preset">Very Fast</node><node key="videofilter.scale.enabled">true</node><node key="videofilter.scale.width">1280</node><node key="videofilter.scale.height">720</node><node key="videofilter.frame.enabled">true</node><node key="videofilter.frame.fps">24</node><node key="videofilter.eq.brightness">-5</node><node key="videofilter.denoise.mode">Temporal</node></MediaCoderPrefs>
h264.cfg
[RenameInputFile]
yes
[P1Application]
C:\hoge\TSSplitter\TsSplitter.exe
[P1Dir]
X:\tvenc_temp
[P1Arguments]
"%Input%" -OUT "%P1Dir%" -EIT -SD -1SEG -SEP3 -OVL5,10,0,0 -WAIT2
[P1SearchPattern]
%InputName%_HD.ts
[P1SearchMethod]
Largest
[P2Application]
C:\hoge\BonTsDemux\BonTsDemux.exe
[P2Arguments]
-i "%P1Output%" -o "%P1Dir%\%P1OutputName%" -es 0 -encode "MPEG2PS_AC3" -sound 0 -nd -nogui -start -quit
[P2SearchPattern]
%P1OutputName%*.mpg
[P3Application]
C:\Program Files\MediaCoder\MediaCoder.exe
[P3Arguments]
"%P2Output%" -start -exit -preset "%param1%"
[P3SearchPattern]
%P2OutputName%.mp4
[P1DeleteTemporalFiles]
yes
[P2DeleteTemporalFiles]
yes
[P3DeleteTemporalFiles]
yes
コマンドの実行方法
bat ファイルの場合
"C:\hoge\V-AutoEncoder\v-autoencoder.exe" -settings "C:\hoge\V-AutoEncoder\h264.cfg" -input %1 -param1 "C:\hoge\V-AutoEncoder\mediacoder-preset.xml" -queue
move "X:\tvenc_temp\%~n1_D.mp4" "X:\tvenc\%~n1.mp4"
TVRock の場合
TN:"C:\hoge\V-AutoEncoder\v-autoencoder.exe" -settings "C:\hoge\V-AutoEncoder\h264.cfg" -input %1 -param1 "C:\hoge\V-AutoEncoder\mediacoder-preset.xml" -queue
TN:move "X:\tvenc_temp\%4_D.mp4" "X:\tvenc\%4.mp4"
PT2 自動エンコード設定の問題点
・move もキューに含ませたい。V-AutoEncoder に組み込もうとして適当に bat 書いたけど失敗した。記述が間違ってる? しかたがないので、上記のようにV-AutoEncoder終了後にmoveさせているが、キューに溜まっている場合に対応出来ない。