
Photo by
sannoun
【FFmpeg】動画をHEVC(H265)に変換してPCの空き容量を増やす
## 対象
・Windows
・NVIDIA系のグラフィックスボード
・FFmpegを導入&PATH通し済み
## 方法
1. バッチファイルを下からコピーして作成する
2. 変換したい動画を選択する
3. 作成したバッチファイルにドラッグアンドドロップ
4. 気長に待つ
## バッチファイル
@echo off
rem このバッチファイルをカレントディレクトリにする
cd /d %~dp0
rem 環境変数を遅延展開する
setlocal enabledelayedexpansion
if "%~n1"=="" (
rem このファイルの説明をして終了
call :EXPLANATION
pause
exit
) else (
rem 引数の全体数をカウント
for %%n in (%*) do set /a argumentCount=argumentCount+1
for %%i in (%*) do (
rem 処理済み(現在処理している動画含む)の動画数
set /a EncMovieCount=EncMovieCount+1
rem 出力ファイル名(入力ファイルと同じディレクトリに出力する。フルパス。)
set outputFilePathAndName=%%~dpni_hevc.mp4
rem 入力ファイル名(フルパス)
set inputFilePathAndName=%%~dpnxi
rem ffprobeのオプション(-iオプションの前)
set ffprobeStrPre=-hide_banner
rem ffprobeのオプション(-iオプションの後)
set ffprobeStrPost=-show_entries stream=r_frame_rate -show_entries format=bit_rate -unit -of json
rem findstrの正規表現(BitRate)
set findstrBitRegex=bit_rate.*s
rem ffprobeを使用してビットレートを取得し、jsonファイルに書き込む
ffprobe !ffprobeStrPre! -i !inputFilePathAndName! !ffprobeStrPost!>ffprobeResult.json
rem jsonファイルからビットレートが記述されている行を抽出する
for /f "usebackq delims=" %%j in (`findstr /r "!findstrBitRegex!" ffprobeResult.json`) do set bitRateResult=%%j
call :FFMPEG_COMMAND
)
rem 作業用のjsonファイルを削除する
del ffprobeResult.json
endlocal
pause
exit
)
:FFMPEG_COMMAND
echo ----------------------------------------------------------------------
echo !EncMovieCount! / !argumentCount!
echo ドラッグアンドドロップされた動画ファイルを一括で処理しています。
echo 中止する場合は Ctrl + C 次いで Y を押した後、 Enter でバッチを終了してください。
echo ----------------------------------------------------------------------
ffmpeg ^
-hide_banner ^
-i "!inputFilePathAndName!" ^
-c:v hevc_nvenc ^
-b:v !bitRateResult:~21,-7! ^
-c:a copy ^
-strict -2 ^
-tag:v hvc1 ^
"!outputFilePathAndName!"
exit /b
:EXPLANATION
echo ----------------------------------------------------------------------
echo ■このファイルの目的
echo 動画をhevc(H265)に変換するためのバッチファイル。
echo.
echo ■動作環境
echo FFmpegが動作するWindows
echo.
echo ■使い方
echo 1. 変換したいファイルをこのバッチファイルにドラッグ&ドロップする(複数選択可能)
echo 2. 待つ
echo ----------------------------------------------------------------------
exit /b
## 効果
容量
200GBが180GBになったので、20GBくらい空き容量を増やすことができた。
画質
画質の劣化を抑えるために、ビットレートをオリジナルの動画から検出して変換後のビットレートに指定しているのでほぼ画質の劣化は感じない。(指定しているが、同じビットレートにはならない)
音質
オリジナルから変換せずにコピーしているので変わらないはず。
一言
多分この記事サイレント修正しそう
いいなと思ったら応援しよう!
