FC2ブログ
にゃろぐ
PCとかF1とか
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MPEG2-TSファイルをaviutl+x264でエンコード その2
MPEG2-TSファイルをH.264/mp4にエンコードする方法です。
素人による素人のための解説です。
設定を作ったのは一年以上前で思い出しながら書いているので何か抜けているかも知れません。

用意する物
Aviutl
DGMPGDec
x264out
x264 詰め合わせとmp4cat.exe(改造したソフトのところにあります)
AviSynth 2.5
warpsharpパッケージ
libFAAD2 dll for Win32
VLC
ToWave
NeroDigitalAudio

あとはDGIndexの日本語化パッチロゴ解析・透過性ロゴインタレース解除2アンシャープマスクMT・WarpSharpMTLanczos 3-lobed 拡大縮小自動フィールドシフト インタレース解除プラグインなど。


.まず、Aviutlを適当な場所(ここではC:\aviutl)に解凍し、x264outに入っている「x264out.auo」「x264out.ini」「toolsフォルダ」、x264詰め合わせに入っている「x264gui.auo」「x264gui.ini」、DGMPGDecに入っている「DGDecode.dll」、warpsharpパッケージに入っている「avsinp.aui」、NeroDigitalAudioに入っている「neroAacEnc.exe」と入手したプラグインをaviutlフォルダに入れます。

さらに、「DGIndex.avs」というファイルを作り、テキストエディタで開き、次のように記述しaviutlフォルダに保存します。

LoadPlugin("C:\aviutl\DGDecode.dll")
d2vPath="__vid__"
DGDecode_mpeg2source(d2vPath, info=3)
ConvertToYUY2(interlaced=true)


.AviSynth 2.5をインストールします。

.DGMPGDecを適当な場所に解凍し日本語化パッチを当てます。
DGIndex.exeを実行し、設定→AVSテンプレートから「テンプレートを読み込む」を押して先ほど作成した「DGIndex.avs」を選択します。
音声→出力形式→全トラック一括分離を選択します。
設定が完了したら、tsファイルを読み込み、メニューからファイル→プロジェクトの保存を押し、適当な場所に保存します。すると、「d2vファイル」「DELAY○○msの名前がついたaacファイル」「avsファイル」ができます。

TSファイルにワンセグなどを含んでいる場合は、PIDの検出が必要になるかもしれません。以下のサイトを参考にしてください。
http://freesoft.tvbok.com/tidegi/mpeg-ts_blue-ray.html
面倒なので録画の際にワンセグなどを含まないようにしておいたほうがよいと思います。

.VLCをインストールします。次に、ToWaveを適当な場所に解凍し、libFAAD2 dll for Win32に入っている「Libfaad2.dll」をToWaveのフォルダに入れます。ToWave.exeを実行し、VLCをインストールした場所のパスを入れます。設定が完了したら、ToWave.exeに先ほどのaacファイルをドラッグ&ドロップします。すると「○○ms.wav」と「0ms.wav」のふたつの音声ファイルができます。「○○ms.wav」の方は削除してください。

.aviutlを実行します。
設定→色変換の設定で、入力・出力を自動に設定します。
設定→フィルタの順序で上から次のような順番にします。

インタレース解除2→ロゴ解析→透過性ロゴ→クリッピング&リサイズ→アンシャープマスクMT→Warpsharp
MT→Lanczos 3-lobed 拡大縮小

インタレース系は最初に、ロゴ除去系はその次にシャープフィルタ系はできるだけに最後の方にサイズの変更は最後になるようにしてください。

フィルタの設定は以下の感じで。シャープをきつめにかけています。この辺はお好みで。
f.jpg


ファイル→開くから先ほど出力されたavsファイルを選択します。
ファイル→音声読み込みから、0ms.wavを選択します。
映像と音声を読み込めたらロゴ解析を始めます。
CMが含まれていない部分を選択し、25000フレーム程度解析をします。
解析をするときは、インターレース解除・インターレース解除2だけを有効にしておき、インターレースが解除されている状態の映像を解析します。
解析が完了したらaviutlフォルダに保存・送信し、シャープフィルタ、サイズ変更フィルタ、透過性ロゴフィルタ等を有効にしてください。

24fps化する場合
24fps化する場合はフレームレートの変更で30fps→24fpsに、さらに間引きは自動24fpsの処理を使うにチェックをいれ、インターレース解除も自動24fpsを選んでください。
表示→間引き予定フレームの表示にチェックをいれ、動きが激しいシーンで、ちょうどいいフレームに×がついているか確認します。もしおかしな場合は、フィールドオーダーをボトム→トップにしてください。地デジ・BSではほとんどがトップ→ボトムだと思います。BSジャパンだけはその日ごとにトップ→ボトムだったり、ボトム→トップになったりするのでその都度確認してください。

CMをカットしたら、ファイル→プラグイン出力→x264出力(mp4/mkv)を選択します。
ビデオ圧縮ボタンを押すと設定画面が出てくるので編集ボタンを押します。

!x264出力(1pass)
set x264OPT=--crf 20 -b 4 --aq-mode 0 --sar %PAR% --threads auto
set AAC=faac.exe -q 100 -o "%TMPF%.m4a" -
#set AAC=NeroAacEnc.exe -br 128000 -if - -of "%TMPF%.m4a"

ここを次のように編集します。
!x264出力(1pass)
set x264OPT=--crf 20 --qpstep 8 -b 3 --ref 4 --min-keyint 1 --keyint 240 --level 4.1 --sar %PAR% --threads auto
#set AAC=faac.exe -q 125 -o "%TMPF%.m4a" -
set AAC=NeroAacEnc.exe -br 160000 -if - -of "%TMPF%.m4a"

x264の設定は各自煮詰めていってください。
levelオプションはCPUで再生する場合は気にしなくてよいのですが、再生支援を使う場合はきっちりとする必要があります。
HDの場合は「4.1」SD解像度の場合は「3」が適当と思われます。詳しくは以下のサイトに書いてあります。
http://agehatype0.blog50.fc2.com/blog-entry-160.html
編集したら保存して「!x264出力(1pass)」を選び、アスペクト比を指定し設定を完了してください。
あとは、ファイル名を入力しエンコード開始です。
映像・音声をエンコードする際、ファイアーウォールソフトが警告を出しますが、許可してください。


24fpsと30fpsが混在しているソースの場合
これはあまりエンコードしたことがないのであまり当てにしないでください。
混在ソースの場合は、フレームレートの変更をなしにし、インターレースの解除から自動フィールドシフトを選択してください。
自動フィールドシフトの設定は「映画/アニメ」のプリセットで。

CMカットが終わったらファイル→プラグイン出力→拡張x264出力(GUI)を選択します。
ビデオ圧縮ボタンを押し設定画面を開き、neroAacEnc.exeのパスを指定します。音声のエンコード設定はAAC-LC 192kbpsぐらいがよいかと思います。
右上のCLI Modeを押し、次の値をペーストします。

--preset Medium --crf 20 --qpstep 8 --min-keyint 1 --keyint 240 --bframes 3 --ref 4 --direct auto --threads auto --level 4.1

設定は全く煮詰めていません。各自研究してください。
ペーストしたら拡張設定タブの自動フィールドシフトv7対応にチェックを入れます。
OKボタンを押し、ファイル名を入力してエンコードを開始します。


24fps+60fpsの場合(本編24fps~エンドロール60fps~予告24fps)
まず通常の24fpsソースのように設定しCM部分をカットします。
CMカットが終わったら、wav出力をします。ここではtest.wavという名前にしておきます。
次に、ファイルの先頭からテロップが始まる寸前のフレームまでを選択します。
ファイル→プラグイン出力→x264出力(mp4/mkv)を選択
ビデオ圧縮ボタンを押すと設定画面が出てくるので編集ボタンを押し次の設定を付け加えます。

!x264出力(音なし)
###### x264とAACのパラメータはここで設定してください ######
set x264OPT=--crf 20 --qpstep 8 -b 3 --ref 4 --min-keyint 1 --keyint 240 --level 4.1 --sar %PAR% --threads auto
x264.exe %x264OPT% -o "%OUT%.mp4" %AVS%
exit /b

保存したら設定画面を一度閉じ、再度設定画面を開いてx264出力(音なし)を選択し、OKを押します。
ファイル名を01.mp4とし、バッチ登録をします。

次に今度はテロップ終了直後のフレームからファイル終点までの部分を選択し、先ほどと同じようにx264出力(音なし)の設定で03.mp4という名前でバッチ登録します。

ここで適当な名前を付けてプロファイルを保存しておきます。ここでは仮に、アニメ音無というプロファイル名で保存しておきます。
次にこの設定を引き継ぎ、アニメ音無(60fps)というプロファイルを作りアクティブにしておきます。
フレームレートの変更をなしにし、インタレースの解除は自動を選択してください。

ファイル→開くから、再度現在のソースファイルを開き直します。このとき60fps読み込みにチェックを入れます。
テロップが表示される最初のフレームからテロップが表示されている最後のフレームまでを選択します。
x264出力(mp4/mkv)から、x264出力(音なし)の設定を選び02.mp4という名前でバッチ登録してください。
ちなみに、読み込んだファイルのテロップの表示がおかしい場合はおそらくフィールドオーダーが間違っています。
60fpsで読み込んでいるときはフィールドオーダーを変更しただけでは効果ありませんのでフィールドオーダーを変えてから再度60fps読み込みしてください。

ファイル→バッチ出力からバッチ出力リストを表示しバッチ出力を開始します。
エンコードが完了すると01.mp4、02.mp4、03.mp4とtest.wavが完成します。(ここではE:\にファイルを出力したとします)

mp4catを適当なフォルダに解凍します。ここではC:\mp4catというフォルダに解凍しておきます。
コマンドプロンプトを開き次のコマンドを実行します。

"C:\mp4cat\mp4cat.exe" -o "E:\nosound.mp4" "E:\01.mp4" "E:\02.mp4" "E:\03.mp4"

Eドライブにnosound.mp4という結合されたファイルが完成します。

次にwavファイルをエンコードします。

"C:\aviutl\NeroAacEnc.exe" -br 160000 -if "E:\test.wav" -of "E:\test.m4a"

最後に映像と音声を結合します。

"C:\aviutl\tools\mp4box.exe" -force-cat -add "E:\test.m4a" -add "E:\nosound.mp4" -new "E:\complete.mp4"


以上で完成です。つなぎ目に違和感やエラーがないか確認してください。
この辺は自己流なので本当はもっとスマートなやり方があるかも知れません。

スポンサーサイト

テーマ:動画 - ジャンル:コンピュータ



プロフィール

toshi

Author:toshi
FC2ブログへようこそ!



最近の記事



最近のコメント



最近のトラックバック



月別アーカイブ



カテゴリー



里親募集



ブログ内検索



RSSフィード



リンク

このブログをリンクに追加する





上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。