'24/12/14: dantto4kで録画したTSの音ズレ無しエンコード(Avisynth+)のメモ
略図にすると、地デジやBS/CSの場合は
ts(H.264 + AAC )━[DGIndex]━┳━d2v ━━━━━━┳━avs━┳━[ENCODER]━h264,HEVC,AV1━┳━Muxser[ffmpeg,mp4box]━mp4 ┗━aac━[FAW]━wav ┛ ┗━[Aviutl] ━wav━[FAW]━aac┛だったのを、BS4K/8Kだと、
ts(HEVC + AAC)━┳━[ffms2]━ffindex ━━━━━━┳━avs━┳━[ENCODER]━h264,HEVC,AV1━┳━Muxser[ffmpeg,mp4box]━mp4 ┗━[ts_parser]━aac━[FAW]━wav ┛ ┗━[Avs2wav]━wav━[FAW]━aac┛にするってこと。
●録画ファイル
record.ts ---①
●インデックスを作成(ffms2)ffmsindex.exe "①"
record.ts.ffindex が作成される(作成しなくても、avsでFFVideoSourceを使ってTSを読み込む際に自動生成される)
ts_parser.exe --mode da -o out "①"
out PID XXX DELAY -YYYms.aac がPIDごとに作成されるので必要なファイルだけ残す(PID 110など)---②
aactool.exe -i "②" -c 2 -n null6ch.aac -o "mod PID XXX DELAY -YYYms.aac"
前番組が5.1chで、途中音声チャンネルが切り替わって、本編の2chが認識されない場合
aactool.exe -i "②" -c 6 -n null2ch.aac -o "mod PID XXX DELAY -YYYms.aac"
前番組が22.2chの場合は、-c 5 とすればいいようだ
mod PID XXX DELAY -YYYms.aac が作成される---③
fawcl.exe "②"または"③" out_aac.wav
out_aac.wav が作成される---④
infile.avs ---⑤
SetFilterMTMode("DEFAULT_MT_MODE", MT_MULTI_INSTANCE)
v=FFVideoSource("①")
a=WavSource("④")
audiodub(v,a)
#適宜Trim
Trim(433,18415)
#適宜ロゴ消しなど
DelogoHD(logofile="NHK BSP4K.lgd", start=60, end=17682)
#適宜スレッド指定
Prefetch(8)
return last
avs2wav64.exe "⑤" OUTPUT.wav
OUTPUT.wav が作成される---⑥
fawcl.exe "⑥"
OUTPUT_out.aac が作成される---⑦
適宜エンコード
ffmpeg.exe -y -f avisynth -probesize 40M "⑤" -an -c:v libx265 -crf 26 -maxrate:v 6M -bufsize 12M -x265-params "colorprim=bt2020:colormatrix=bt2020nc:transfer=bt2020-10" OUTPUT.mp4
OUTPUT.mp4 が作成される---⑧
ffmpeg.exe -y -i "⑧" -i "⑦" -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 -f mp4 ENCODED.mp4
ENCODED.mp4 が作成される