見出し画像

【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くらい空き容量を増やすことができた。

画質
画質の劣化を抑えるために、ビットレートをオリジナルの動画から検出して変換後のビットレートに指定しているのでほぼ画質の劣化は感じない。(指定しているが、同じビットレートにはならない)

音質
オリジナルから変換せずにコピーしているので変わらないはず。

一言

多分この記事サイレント修正しそう

ここから先は

0字

¥ 300

この記事が気に入ったらサポートをしてみませんか?