@echo off ::: QSVサンプルバッチ ::: ::: このバッチファイルと同フォルダに、ffmpeg.exeとQSVEncC.exeを置きます ::: バッチファイル上にファイルをD&Dすると、mp4ファイルが出力されます ::: ::: ファイル名によっては、Explorerとcmd.exeの仕様でエラーになります ::: 全角・半角スペースやDOSのファイル名禁止文字に注意 ::: 出力映像サイズ、エンコードオプション、インターレース解除等は変数で設定 ::: ::: ts2aacを使う場合、ts2aac.exeを配置した上で、下記設定に変更を加えてください :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: ※メモ :: 音声一つのみ対応 :: tssplitterを通したファイル等、音ズレが発生する場合があります :::::::::::::: :: 設定 :: :::::::::::::: :各実行ファイルの場所指定 set FFMPEG_EXE=%~dp0ffmpeg.exe set QSVENC_EXE=%~dp0QSVEncC.exe set TS2AAC_EXE=%~dp0ts2aac.exe :最終出力フォルダ指定 set OUTF=%~dp1 :一時フォルダ指定 set TMPF=%~dp1 :QSVEncCオプション(QP_MODE=vqp or cqp 詳しくはQSVEncC_options.txt参照) :※インターレースを保持する場合、VQPモードは使えません set QP_MODE=vqp set QPv=22:24:27 set Qualityv=balanced :映像出力設定(WID=幅,HEI=高さ,DAR_V=アスペクト比) set WID=720 set HEI=480 set DAR_V=16:9 set VS=%WID%:%HEI% :インターレース解除指定(y or any) set DEINTERLACE=n :60fps化指定(y or any) set BOB_V=n :TS2AACを使うかどうか(y or any) set Ts2aac_V=n :::::::::::: :: 前処理 :: :::::::::::: :オプション処理 if %DEINTERLACE% equ y ( set YADIF_V=yadif, ) else ( set YADIF_V= set QP_MODE=cqp ) if %BOB_V% equ y (set YADIF_V=yadif=1:-1:0,) :::::::::::: :: メイン :: :::::::::::: :Start IF "%~1"=="" GOTO end :ファイルチェック if exist "%OUTF%%~n1.mp4" ( echo 出力ファイルと同名のファイルが存在します echo このファイルの処理を中止します pause goto next ) :一時ファイル消去 del "%TMPF%\%~n1*.aac" 2>nul.txt del "%TMPF%\%~n1*_tmp.ts" 2>nul.txt goto ENCODE :ENCODE set input_file=%~1 goto Video :VIDEO goto FFmpeg_v :FFmpeg_v "%FFMPEG_EXE%" -v 0 -i "%input_file%" -pix_fmt yuv420p -filter:v %YADIF_V%scale=%WID%:%HEI% -c:v rawvideo -an -f yuv4mpegpipe - | "%QSVENC_EXE%" --%QP_MODE% %qpv% -u %qualityv% -i - --y4m -o "%TMPF%%~n1_tmp.264" goto AUDIO :AUDIO if "%Ts2aac_v%" equ "y" ( "%TS2AAC_EXE%" -z -e 0 -i "%input_file%" "%tmpf%%~n1" goto TS2AAC_FFMPEG ) else ( goto FFMPEG_A ) :Muxing :TS2AAC_FFMPEG for %%i in ( "%tmpf%%~n1*.aac" ) do ( "%FFMPEG_EXE%" -i "%TMPF%%~n1_tmp.264" -i "%%i" -c:v copy -c:a libvo_aacenc -ab 96 -map 0:v -map 1:a "%tmpf%%~n1.mp4" ) goto delete_tmp :FFMPEG_A "%FFMPEG_EXE%" -i "%TMPF%%~n1_tmp.264" -i "%~1" -c:v copy -c:a libvo_aacenc -ab 96 -map 0:v -map 1:a "%tmpf%%~n1.mp4" goto delete_tmp :::::::::::: :: 後処理 :: :::::::::::: :delete_tmp :一時ファイル消去 del "%TMPF%%~n1*aac" 2>nul.txt del "%TMPF%%~n1*aac*.mp4" 2>nul.txt del "%TMPF%%~n1_tmp.ts" 2>nul.txt del "%TMPF%%~n1_tmp.264" 2>nul.txt del "%TMPF%%~n1_264.mp4" 2>nul.txt del "%TMPF%%~n1.ts.ffindex" 2>nul.txt :Next SHIFT GOTO start ::::::::::::: :: 終了処理 :: :::::::::::::: :End echo ※音ずれがないか、確認してね!