- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
891 :名無しさん@編集中[]:2011/03/01(火) 00:42:04.10 ID:3Vs7XkYE - 「エルフェンリート」いうアニメの第1話を、映像をH.264規格で、音声をAAC規格でエンコードし、mp4コンテナに入れるために以下の事を行いました。
このアニメの第1話(ソースはDVD)は、OPが24fps、本編が24fpsと30fpsの混合、EDが60fps、予告が24fpsと30fpsの混合という構成になっています。 そこで、各パートを別々にエンコードして最後に結合させ、VFRなファイルにする事にしました。 ここで、本編と予告では24fpsの場面と30fpsの場面が混在しているので、TIVTCを使って自動でVFR化しました。 EDはTDeintのオプションと、nnedi3.dllとTMM.dllの2つのプラグインを使ってBob化しました。 以下が各パートをエンコードする際のavsファイルの内容とx264に送ったコマンドです。 ■OP [op.avsの内容] LoadPlugin("DGDecode.dllの場所") LoadPlugin("TIVTC.dllの場所") MPEG2Source(".d2vの場所") #d2vファイルはDGIndexでDVDを読み取って作成しました。 Trim(0,2699) #OPの部分だけ切り出す TFM() TDecimate(mode=1) Crop(8,0,704,480) #無効領域を左右8pxずつ削る [x264に送るコマンド] x264.exe --sar 40:33 --crf 20 --cqm jvt --bframes 3 --ref 4 --output "op.h264" "op.avs
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
892 :名無しさん@編集中[]:2011/03/01(火) 00:44:03.44 ID:3Vs7XkYE - ■本編1pass目
[first_pass.avsの内容] LoadPlugin("DGDecode.dllの場所") LoadPlugin("TIVTC.dllの場所") MPEG2Source(".d2vの場所") Trim(2700,41399) #本編の部分だけ切り出す TFM(d2v=".d2vの場所", output="matches.txt") TDecimate(mode=4,output="metrics.txt") crop(344,224,-344,-224) ■本編2pass目 [second_pass.avsの内容] LoadPlugin("DGDecode.dllの場所") LoadPlugin("TIVTC.dllの場所") MPEG2Source(".d2vの場所") Trim(2700,41399) #本編の部分だけ切り出す TFM(input="matches.txt",batch=true) TDecimate(mode=5,hybrid=2,vfrDec=1,input="metrics.txt",tfmIn="matches.txt",mkvOut="mkv-timecodesfile.txt",batch=true) Crop(8,0,704,480) [x264に送るコマンド] avs2avi.exe "first_pass.avs" -c null -o n x264.exe --sar 40:33 --crf 20 --cqm jvt --tcfile-in "mkv-timecodesfile.txt" --bframes 3 --ref 4 --output "honpen.h264" "second_pass.avs"
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
893 :名無しさん@編集中[]:2011/03/01(火) 00:44:56.90 ID:3Vs7XkYE - ■ED
[ed.avsの内容] LoadPlugin("DGDecode.dllの場所") LoadPlugin("TDeint.dllの場所") LoadPlugin("nnedi3.dllの場所") LoadPlugin("TMM.dllの場所") MPEG2Source(".d2vの場所") Trim(41400,44099) #EDの部分だけ切り出す interp=nnedi3(field=-2) TDeint(mode=1, order=1, edeint=interp, emask=TMM(mode=1, order=1)) Crop(8,0,704,480) [x264に送るコマンド] x264.exe --sar 40:33 --crf 20 --cqm jvt --bframes 3 --ref 4 --output "ed.h264" "ed.avs" ■予告 [yokoku_first_pass.avsとyokoku_second_pass.avsの内容] Trim(2700,41399)の所をTrim(44100,45027)にした以外、本編1pass目、2pass目のavsと同じ。 [x264に送るコマンド] avs2avi.exe "yokoku_first_pass.avs" -c null -o n x264.exe --sar 40:33 --crf 20 --cqm jvt --tcfile-in "mkv-timecodesfile.txt" --bframes 3 --ref 4 --output "yokoku.h264" "yokoku_second_pass.avs" 次に、音声をAAC規格でエンコードすることにしました。 DGIndexでDVD(をリップしてでてきたVOBファイル)からd2vファイルを作成する際に一緒に出力された音声ファイル(.wav)は、第1話だけでなく第2話の音声もくっ付いています。 そこで、この音声ファイルを以下のavsファイルを利用して映像と共にVirtualDubで開き、第1話の分、つまり、0フレームから45027フレームまで切り出し、WAVEファイルとして出力しました。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
894 :名無しさん@編集中[]:2011/03/01(火) 00:46:00.41 ID:3Vs7XkYE - [wav_cut.avsの内容]
LoadPlugin("DGDecode.dllの場所") MPEG2Source(".d2vの場所") audio = WAVSource(".wavの場所") AudioDub(audio) 出力されたWAVEファイルは、neroAacEnc.exeでAACファイルにエンコードしました。以下がneroAacEnc.exeに送ったコマンドです。 neroAacEnc.exe -ignorelength -q 0.55 -if "WAVEファイルの場所" -of "出力するAACファイルの場所" そして、mp4catを使って、op.h264、honpen.h264、ed.h264、yokoku.h264という各パートの映像を結合させ、音声ファイル(AAC)と共にmp4コンテナに格納しようと思ったのですが、mp4catを入手することが出来ませんでした(配布先が無くなっていた)。 そこで、次のような方法をとりました。 1. 各パートの映像をmp4boxを使ってそれぞれ別々のmp4コンテナに入れ、op.mp4、honpen.mp4、ed.mp4、yokoku.mp4を作成する。 2. MP4 File ReaderとMP4 Export Pluginという、AviUtlでMP4ファイルを入力・出力することのできるプラグインを使って各パートの映像(mp4)を結合する。 この後、mp4boxで映像と音声をmp4コンテナに格納するはずなのですが、映像と音声の尺が違っています。 MediaInfoというソフトで調べると、映像と音声はそれぞれ次の長さとなっています。 映像:24分56秒 音声:25分2秒 このままの状態で映像と音声をMP4コンテナに入れてしまうと映像と音がずれてしまいます。実際にやってみたらずれました。 どう対処すれば良いですか。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
895 :891[]:2011/03/01(火) 00:50:44.09 ID:3Vs7XkYE - あと、>>894の音声:25分2秒というのは
AACにエンコードする前の音声(WAVE)の長さです。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
899 :891[]:2011/03/01(火) 01:06:23.53 ID:3Vs7XkYE - >>897
第1話が0から45027フレームまでで、それ以降のフレームは第2話になっています。 今回は第1話をエンコードするので、映像の最後が45027フレームとしています。 >>Trimを全部繋げて、音声のavsに張り付けてみる 今からやってみます。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
901 :891[]:2011/03/01(火) 01:30:14.52 ID:3Vs7XkYE - >>899
>>Trimを全部繋げて、音声のavsに張り付けてみる ↑これは、op.mp4、honpen.mp4、ed.mp4、yokoku.mp4をAvisynthで繋げ、AudioDub()するという意味なのでしょうか。 >>900 tc2mp4Modについて調べてみます。 今、 mp4box -add op.mp4 -cat honpen.mp4 -cat ed.mp4 -cat yokoku.mp4 -new move_.mp4 を実行してみましたが、ed.mp4だけ以下のようなメッセージが出て結合できませんでした。 Appending file ed_01.mp4 No suitable destination track found - creating new one (type vide)
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
904 :名無しさん@編集中[]:2011/03/01(火) 02:05:20.13 ID:3Vs7XkYE - >>903を参考に、次のようなavsを作り、第1話の音声を切り取ってみました。
[wav_cut.avsの内容] LoadPlugin("DGDecode.dllの場所") v = MPEG2Source(".d2vの場所") a = WAVSource(".wavの場所") AudioDub(v,a) Trim(0,2699)++Trim(2700,41399)++Trim(41400,44099)++Trim(44100,45027) 上記のavsで第1話の音声を切り出して出力してみましたが 切り出した音声は依然25分2秒での長さで、映像の長さ(24分56秒)の方が短くなっています。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
905 :891[]:2011/03/01(火) 02:08:01.20 ID:3Vs7XkYE - 訂正
>>904 ×切り出した音声は依然25分2秒での長さで ○切り出した音声は依然、25分2秒の長さで
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
909 :891[sage]:2011/03/01(火) 03:05:02.34 ID:3Vs7XkYE - ■OPの映像の長さの調査
>>906の上のavsをVirtualDubに読み込ませたところ、正常ならばOPの長さは、0:01:30.057のはずだという事が分かりました。 >>906の下のavsをVirtualDubに読み込ませたところ、OPの長さは、0:01:30.048となっていました。 つまり、OPの映像の長さが0.009秒短くなっていることが判明しました。 ■本編 正常ならば、0:21:31.257の長さですが、0:21:31.248の長さになっていました。 つまり、0.009秒短くなっていました。 ■ED 正常ならば、0:01:30.057の長さですが、0:01:30.048の長さになっていました。 つまり、0.009秒短くなっていました。 ■予告 正常ならば、0:00:30.931の長さになりますが、0:00:30.906の長さになっていました。 つまり、0.025秒短くなっていました。 全部合わせて映像は、0.009+0.009+0.009+0.025=0.052秒 遅れていることが判明しました。 avsのフィルタがかかった時点では、それほど音はずれていないという事でしょうか。 ということは、 映像:24分56秒 音声:25分2秒 の6秒のずれは、x264で映像をエンコードした時に発生したのでしょうか。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
910 :891[sage]:2011/03/01(火) 03:07:57.56 ID:3Vs7XkYE - 訂正
×avsのフィルタがかかった時点では、それほど音はずれていないという事でしょうか。 ○avsのフィルタがかかった時点では、実質的には映像は短くなっていないという事でしょうか。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
911 :891 長くなってすみません[sage]:2011/03/01(火) 03:29:32.38 ID:3Vs7XkYE - >>909の続き
x264で映像をエンコードした時に、映像が短くなっていると思ったので実際に確かめてみました。 Aviutlで各パートのmp4の映像の長さを調査した結果、以下のようになりました。 op.mp4の映像の長さは、00:01:30.04 (エンコードによる映像の長さの縮みは無しと判断できる) honpen.mp4の長さは、00:21:25.16 (avsのフィルタがかかった時点から約6秒映像が短くなっていると判断できる) ed.mp4の長さは、00:01:30.07 (エンコードによる映像の長さの縮みはぼとんど無いと判断できる) yokoku.mp4の長さは、00:00:31.04 (エンコードによる映像の長さの縮みはぼとんど無いと判断できる) やはり、x264でエンコードした際に、本編の長さが有意に短くなっていました。 こうなったのは、本編の映像がVFRだからなのでしょうか。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
915 :891[sage]:2011/03/01(火) 17:29:14.07 ID:3Vs7XkYE - >>914
調べてみると、確かにその原理で映像の尺が短くなっているようでした。 当初、(>>891参照)本編と予告はTIVTCを使って自動でVFR化しようとしていましたが、 勉強ということで、VirtualDubでd2vを読み取り、コマ送りして、自力で各シーンごとのfpsを判別しました。 すると、以下のようになっていました。 OP(24fps)→本編(30fps)→本編(24fps)→本編(30fps)→本編(24fps)→…省略…→本編(30fps) →ED(60fps)→予告(24fps)→予告(30fps)→…省略…予告(30fps) あと、上記の各パートごとの両端フレームとfpsを記録したタイムコード(v1形式)も作りました。 ここで、>>914を参考に、x264で--tcfile-inを使って、1話全体をタイムコード付のmp4に出力しようと思ったのですが、 各パートごとに違ったフィルタをかけないといけないことに気づきました。 そこで、上記の各パートごとにavsファイルを作り、各パートの映像をx264で--fpsオプションをつけて個別にmp4で出力しました。 ここで、例えば ■OPは 24fps(2-3プルダウン)なので 1. OP.avsファイル内でTFM()とTDecimate(mode=1)を指定して、逆テレシネとインターレース解除を指示する。 あと、TrimでOPだけ切り出し、Crop()で左右8pxずつ削る事も指定しています。 2. このOP.avsをx264に送り、--fps 24 を指定して、OP.mp4で出力 ■本編(30fpsのパート)は 30fpsなので 1. honpen_part01.avs内で、逆テレシネやインターレース解除の指定はせず、 Trimで映像を切り出し、Crop()で左右8pxずつ削る事を指定。 2. honpen_part01.avsをx264に送り、--fps 30 を指定して、honpen_part02.mp4で出力 ■本編(24fpsのパート)は 24fps(縞無し24)なので、 1. honpen_part02.avs内でTDecimate(mode=1)を指定して、逆テレシネを指示する。 インターレース解除の指定はしない。 2. honpen_part02.avsをx264に送り、--fps 24 を指定して、honpen_part02.mp4で出力
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
916 :891[sage]:2011/03/01(火) 17:30:03.70 ID:3Vs7XkYE - >>915の続き
このようにして、honpen_part01.mp4〜honpen_partXX.mp4を出力。 EDや予告もそれぞれed.mp4、yokoku_part01.mp4〜yokoku_partYY.mp4として出力。 その後、異なるfpsのmp4を結合できるソフトで合成し、音声を格納すれば、正常な動画が出来ると考えます。 これの方法は合ってますか? 後、x264で--fpsをつかってfpsを指定すると例えば (1) --fps 24と指定してエンコードすると 24fpsではなく、24000/1001fpsとコマンドプロンプトに表示されています。 (2) --fps 30としてエンコードすると 30fpsではなく、30000/1001fpsと表示されています。 そこで、出力されたmp4のfpsをMediaInfoで解析すると自分で指定したとおりのfps(24fps,30fps)になっていました。 ということは、x264でエンコードしているときに表示される24000/1001fpsや30000/1001fpsは間違いということでしょうか。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
917 :891[sage]:2011/03/01(火) 17:36:15.09 ID:3Vs7XkYE - >>916の続き
後、>>915で書いた本編(30fpsのパート)の処理ですが、 DVDで29.97fpsだったものを、x264でエンコードする際に単に30fpsとするだけで良いのでしょうか。 何かフレームに関する変換等はしなくて良いのでしょうか。
|
- 【初心者歓迎・ダウソNG】総合質問スレッド-76-
920 :891[sage]:2011/03/01(火) 19:19:16.86 ID:3Vs7XkYE - 皆さんありがとうございます。
>>918 ITS、FilterRange()について調べてみます。 avsファイルを何十個も作らないように出来れば、非常に楽になります。
|