x264-10b --profile high422 --preset slow --crf 18 --no-dct-decimate --no-fast-pskip --colorprim bt709 --transfer bt709 --colormat rix bt709 --input-depth 16 --output-csp i422 -o rawvideo.264 from.avs muxer -i rawvideo.264 -o videoonly.mp4 ffmpeg -i from.avi" -acodec copy audioonly.wav qaac -A audioonly.wav remuxer -i videoonly.mp4 -i audioonly.m4a -o to.mp4
できるだけ劣化を少なくマスターとして使える品質を残した状態にしたい! みたいなノリ。あと L-SMASH で wav ぶちこんで mp4 作るコマンドラインも作らんといけんね。
L-SMASH とか ffmpeg とか qaac 導入。10 bit カラーでエンコされてしまう問題がある。なんとかしないと、データ量もったいない。
追記
ドラッグアンドドロップでスタジオ品質ビデオを自動作成しちゃうバッチファイルの作成をした。
@echo off set ORIGINAL_FILEPATH=%~1 set BASE_FILEPATH=%~d1%~p1%~n1\ set AVS_FILEPATH=%BASE_FILEPATH%avisynth.avs set RAW264_FILEPATH=%BASE_FILEPATH%rawvideo.264 set VIDEOONLY_FILEPATH=%BASE_FILEPATH%videoonly.mp4 set WAVE_FILEPATH=%BASE_FILEPATH%audioonly.wav set AUDIOONLY_FILEPATH=%BASE_FILEPATH%audioonly.m4a set OUTPUT_FILEPATH=%~d1%~p1%~n1.mp4 mkdir "%BASE_FILEPATH%" echo AviSource("%ORIGINAL_FILEPATH%").ConvertToYV16(matrix = "Rec709") > "%AVS_FILEPATH%" call x264 --profile high422 --preset slow --crf 18 --no-dct-decimate --no-fast-pskip --colorprim bt709 --transfer bt709 --colormatrix bt709 --output-csp i422 -o "%RAW264_FILEPATH%" "%AVS_FILEPATH%" call muxer -i "%RAW264_FILEPATH%" -o "%VIDEOONLY_FILEPATH%" call ffmpeg -i "%ORIGINAL_FILEPATH%" -acodec copy "%WAVE_FILEPATH%" call qaac -A "%WAVE_FILEPATH%" -o "%AUDIOONLY_FILEPATH%" call remuxer -i "%VIDEOONLY_FILEPATH%" -i "%AUDIOONLY_FILEPATH%" -o "%OUTPUT_FILEPATH%" pause
UT Video を使ったマスターから自動で生成することができるのを確認。
AviSynth (当方では AviSynth+ で動作確認), x264, L-SMASH, ffmpeg, qaac を用いて、AVI [UT Video+LPCM 2ch] から MP4 [H.264/MPEG-4 Part 10 AVC+ALAC] に変換するバッチファイル。ドラッグアンドドロップで自動手続してくれます。
crf は 18 になってるけど、18 から 28 の間でお好みで。high422 profile (YUV 4:2:2) を用いるようにしてるので、可逆圧縮レベルまではいかないものの、高品質で色情報を保存できる。
パスが通ってることが前提。自分は avbinary というフォルダーを作って、x264.bat を作り最新版にリダイレクトするようにしています (ファイル名で複数のバージョンを管理するため)。中身はこんな感じで行ける。
@echo off call "[yourpath]\x264-r2538-121396c" %*
これをすることで、複数のバージョンを維持しながら、コマンド自体は常に最新版を維持できるので便利。シンプルだけど有効的です。
以上。最近 1280x720p を録画する機会が多くてできるだけ劣化させたくないけど、HDD つらい… ってことで作りました。ちなみに 340 GB のファイルが 12.5 GB にほぼ無劣化で落とせるのでよいです (ただし厳密に比較すると劣化している部分はあると思います)。
さらに追記
VLC で 2ch にうまくミックスできないみたいなので視聴用に 2ch 音声も加えた。通常は 3dB の減衰をちゃんとするわけだけど、Splatoon だとしないほうがいいみたいなのでやめた。
@echo off set ORIGINAL_FILEPATH=%~1 set BASE_FILEPATH=%~d1%~p1%~n1\ set AVS_FILEPATH=%BASE_FILEPATH%avisynth.avs set RAW264_FILEPATH=%BASE_FILEPATH%rawvideo.264 set VIDEOONLY_FILEPATH=%BASE_FILEPATH%videoonly.mp4 set WAVE_6CH_FILEPATH=%BASE_FILEPATH%audioonly6.wav set AUDIOONLY_6CH_FILEPATH=%BASE_FILEPATH%audioonly6.m4a set WAVE_2CH_FILEPATH=%BASE_FILEPATH%audioonly2.wav set AUDIOONLY_2CH_FILEPATH=%BASE_FILEPATH%audioonly2.m4a set OUTPUT_FILEPATH=%~d1%~p1%~n1.mp4 mkdir "%BASE_FILEPATH%" echo AviSource("%ORIGINAL_FILEPATH%").ConvertToYV16(matrix = "Rec709") > "%AVS_FILEPATH%" echo x264 --profile high422 --preset slow --crf 18 --no-dct-decimate --no-fast-pskip --colormatrix bt709 --output-csp i422 -o "%RAW264_FILEPATH%" "%AVS_FILEPATH%" call x264 --profile high422 --preset slow --crf 18 --no-dct-decimate --no-fast-pskip --colormatrix bt709 --output-csp i422 -o "%RAW264_FILEPATH%" "%AVS_FILEPATH%" echo --- echo muxer -i "%RAW264_FILEPATH%"?fps=60000/1001 -o "%VIDEOONLY_FILEPATH%" call muxer -i "%RAW264_FILEPATH%"?fps=60000/1001 -o "%VIDEOONLY_FILEPATH%" echo --- echo ffmpeg -i "%ORIGINAL_FILEPATH%" -acodec copy "%WAVE_6CH_FILEPATH%" call ffmpeg -i "%ORIGINAL_FILEPATH%" -acodec copy "%WAVE_6CH_FILEPATH%" echo --- echo qaac -A "%WAVE_6CH_FILEPATH%" -o "%AUDIOONLY_6CH_FILEPATH%" call qaac -A "%WAVE_6CH_FILEPATH%" -o "%AUDIOONLY_6CH_FILEPATH%" echo --- echo ffmpeg -i "%ORIGINAL_FILEPATH%" -ac 2 -af "pan=stereo| c0<c0+0.7071067811865475*c3 | c1<c1+0.7071067811865475*c3" "%WAVE_2CH_FILEPATH%" call ffmpeg -i "%ORIGINAL_FILEPATH%" -ac 2 -af "pan=stereo| c0<c0+0.7071067811865475*c3 | c1<c1+0.7071067811865475*c3" "%WAVE_2CH_FILEPATH%" echo --- echo qaac -A "%WAVE_6CH_FILEPATH%" -o "%AUDIOONLY_2CH_FILEPATH%" call qaac -A "%WAVE_6CH_FILEPATH%" -o "%AUDIOONLY_2CH_FILEPATH%" echo --- echo remuxer -i "%VIDEOONLY_FILEPATH%" -i "%AUDIOONLY_6CH_FILEPATH%" -i "%AUDIOONLY_2CH_FILEPATH%" -o "%OUTPUT_FILEPATH%" call remuxer -i "%VIDEOONLY_FILEPATH%" -i "%AUDIOONLY_6CH_FILEPATH%" -i "%AUDIOONLY_2CH_FILEPATH%" -o "%OUTPUT_FILEPATH%" pause
もっとさらに追記
動画エンコに時間がかかるけど音声変換も ffmpeg だとクッソ時間かかるので、音声と映像を並列にエンコードするようにした。
2sutudiovideo(multi).bat
@echo off set ORIGINAL_FILEPATH=%~1 set BASE_FILEPATH=%~d1%~p1%~n1\ set OUTPUT_FILEPATH=%~d1%~p1%~n1.mp4 set VIDEOONLY_FILEPATH=%BASE_FILEPATH%videoonly.mp4 set AUDIOONLY_6CH_FILEPATH=%BASE_FILEPATH%audioonly6.m4a set AUDIOONLY_2CH_FILEPATH=%BASE_FILEPATH%audioonly2.m4a mkdir "%BASE_FILEPATH%" echo start /high /min videoenc.bat "%BASE_FILEPATH%" start /high /min videoenc.bat "%BASE_FILEPATH%" echo start /min audioenc6.bat "%BASE_FILEPATH%" start /min audioenc6.bat "%BASE_FILEPATH%" echo start /min audioenc2.bat "%BASE_FILEPATH%" start /min audioenc2.bat "%BASE_FILEPATH%" :loop timeout -t 30 if not exist "%VIDEOONLY_FILEPATH%" goto loop if not exist "%AUDIOONLY_6CH_FILEPATH%" goto loop if not exist "%AUDIOONLY_2CH_FILEPATH%" goto loop echo remuxer -i "%VIDEOONLY_FILEPATH%" -i "%AUDIOONLY_6CH_FILEPATH%" -i "%AUDIOONLY_2CH_FILEPATH%" -o "%OUTPUT_FILEPATH%" call remuxer -i "%VIDEOONLY_FILEPATH%" -i "%AUDIOONLY_6CH_FILEPATH%" -i "%AUDIOONLY_2CH_FILEPATH%" -o "%OUTPUT_FILEPATH%" pause
videoenc.bat
@echo off set BASE_FILEPATH=%~1 set AVS_FILEPATH=%BASE_FILEPATH%avisynth.avs set RAW264_FILEPATH=%BASE_FILEPATH%rawvideo.264 set VIDEOONLY_FILEPATH=%BASE_FILEPATH%videoonly.mp4 echo AviSource("%ORIGINAL_FILEPATH%").ConvertToYV16(matrix = "Rec709") > "%AVS_FILEPATH%" echo x264 --profile high422 --preset slow --crf 18 --no-dct-decimate --no-fast-pskip --colormatrix bt709 --output-csp i422 -o "%RAW264_FILEPATH%" "%AVS_FILEPATH%" call x264 --profile high422 --preset slow --crf 18 --no-dct-decimate --no-fast-pskip --colormatrix bt709 --output-csp i422 -o "%RAW264_FILEPATH%" "%AVS_FILEPATH%" echo muxer -i "%RAW264_FILEPATH%"?fps=60000/1001 -o "%VIDEOONLY_FILEPATH%" call muxer -i "%RAW264_FILEPATH%"?fps=60000/1001 -o "%VIDEOONLY_FILEPATH%" exit
audioenc6.bat
@echo off set BASE_FILEPATH=%~1 set WAVE_FILEPATH=%BASE_FILEPATH%audioonly6.wav set AUDIOONLY_FILEPATH=%BASE_FILEPATH%audioonly6.m4a echo ffmpeg -i "%ORIGINAL_FILEPATH%" -acodec copy "%WAVE_FILEPATH%" call ffmpeg -i "%ORIGINAL_FILEPATH%" -acodec copy "%WAVE_FILEPATH%" echo qaac -A "%WAVE_FILEPATH%" -o "%AUDIOONLY_FILEPATH%" call qaac -A "%WAVE_FILEPATH%" -o "%AUDIOONLY_FILEPATH%" exit
audioenc2.bat
@echo off set BASE_FILEPATH=%~1 set WAVE_FILEPATH=%BASE_FILEPATH%audioonly2.wav set AUDIOONLY_FILEPATH=%BASE_FILEPATH%audioonly2.m4a echo ffmpeg -i "%ORIGINAL_FILEPATH%" -ac 2 -af "pan=stereo| c0<c0+0.7071067811865475*c3 | c1<c1+0.7071067811865475*c3" "%WAVE_FILEPATH%" call ffmpeg -i "%ORIGINAL_FILEPATH%" -ac 2 -af "pan=stereo| c0<c0+0.7071067811865475*c3 | c1<c1+0.7071067811865475*c3" "%WAVE_FILEPATH%" echo qaac -A "%WAVE_FILEPATH%" -o "%AUDIOONLY_FILEPATH%" call qaac -A "%WAVE_FILEPATH%" -o "%AUDIOONLY_FILEPATH%" exit