どうも、じゃぶじゃぶ(@jbjbgame)です。
最近、ブログのキャプチャ用に撮り貯めたプレイ動画が増えてきて、HDDがもうパンパンです。
三 ;><)⁰
動画編集ソフトは持っていますが、一つ一つ読み込ませてエンコードをかけるのでも一苦労です。1動画を圧縮するために数時間かかることも多く、複数の動画をエンコードする場合は1ファイルずつエンコードが完了するのを待って、終わったらまた読み込ませての繰り返しはもううんざり!
何か一括して動画をエンコードするのに良いツールは無いか調べたところ、『FFmpeg』を見つけました。FFmpegだけでは動画の一括エンコードは難しですが、応用することで実現できそうです。( ・`◡・´)
FFmpeg
FFmpegは動画ファイルや音声ファイルの変換・圧縮が可能なフリーソフトウェアです。
元々はUnix系のオペレーションシステムで作られたので、GUI(グラフィカルユーザインタフェース)のような使い勝手の良い画面などは無く、コマンドラインで操作するツールになっています。簡単に言うとコードを打って操作するツールです。
コマンドラインツールを使ったことが無い方には少し取っつきにくいかもしれませんが、豊富なオプションを備えており、様々な用途に利用できます。
- 動画を圧縮する
- 動画の形式を変換する
- 動画のサイズ・コーディック(圧縮形式)を変更する
- 動画のビットレート・フレームレートを変更する
- 動画から連続した画像を生成する
- 複数の画像から動画を生成する
インストール手順
今回は以下の環境でインストールを行います。
OS:Windows 10 Pro
FFmpegの公式サイトからインストーラーをダウンロードします。
以下のサイトにアクセスしてください。
https://ffmpeg.org/download.html
Windowsのマークにマウスを合わせます。
「Windows builds by Zeranoe」のリンクをクリック。
ダウンロードページに遷移するので「Version」、「Architecture」、「Linking」、「License」を選択してダウンロードします。
基本は何も変更しなくても構いませんが、「Architecture」だけはご自分の使っている環境に合わせたものを選択してください。自分のPCは64bit版なので「Windows 64-bit」を選択して「Dowlooad Build」をクリックします。
Zipファイルがダウンロード出来たら解凍し、解凍されたフォルダごと「C:\Program Files」移動してください。
環境変数の設定
このままでも使うことはできますが、コマンドプロンプトで利用する関係上使い勝手が悪いので、環境変数の設定を行い使いやすくします。
Windowsのスタートボタンを右クリックして、「システム」をクリックしてください。
右上にある「システム情報」のリンクをクリック。
左にある「システムの詳細設定」のリンクをクリック。
環境変数を追加していきます。
「環境変数」のボタンをクリックしてください。
上段の「Path」を選択後、「編集(E)」のボタンをクリックしてください。
一段下の空白を選択した後「参照(B)」をクリックして、先ほどFFmpegをダウンロードしたフォルダ内にある「binフォルダ」を指定してください。
環境変数が追加されました。設定を完了させるため「OK」ボタンをクリックしてください。
FFmpegの使い方
FFmpegを使うにはコマンドプロンプトを起動する必要があります。
コマンドプロンプトは以下の方法で起動します。
- [Windowsボタン]+[R]を押す
- 「cmd」を入力して「OK」をクリック
以下のようにコマンドプロンプトが起ち上がります。
「ffmpeg -version」と入力すると、FFmpegのソフトウェア情報を参照できます。
C:\Users\user>ffmpeg -version ffmpeg version git-2020-07-21-b5f1e05 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.3.1 (GCC) 20200621 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 55.100 / 56. 55.100 libavcodec 58. 97.100 / 58. 97.100 libavformat 58. 49.100 / 58. 49.100 libavdevice 58. 11.101 / 58. 11.101 libavfilter 7. 87.100 / 7. 87.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc 55. 8.100 / 55. 8.100
試しにFFmpegで動画を圧縮してみます。以下のコマンドで圧縮が出来ます。
ffmpeg -i 入力ファイル名 出力ファイル名
C:\Users\user>ffmpeg -i C:\test\ディアブロ3.mp4 C:\test\ディアブロ3-mini.mp4 ffmpeg version git-2020-07-21-b5f1e05 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.3.1 (GCC) 20200621 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 55.100 / 56. 55.100 libavcodec 58. 97.100 / 58. 97.100 libavformat 58. 49.100 / 58. 49.100 libavdevice 58. 11.101 / 58. 11.101 libavfilter 7. 87.100 / 7. 87.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc 55. 8.100 / 55. 8.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 000002ac8ef8bac0] st: 1 edit list: 1 Missing key frame while searching for timestamp: 0 [mov,mp4,m4a,3gp,3g2,mj2 @ 000002ac8ef8bac0] st: 1 edit list 1 Cannot find an index entry before timestamp: 0. Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\test\ディアブロ3.mp4': ・・・・・・・・ [libx264 @ 000002ac900be4c0] ref B L0: 89.2% 9.2% 1.6% [libx264 @ 000002ac900be4c0] ref B L1: 95.5% 4.5% [libx264 @ 000002ac900be4c0] kb/s:1268.75 [aac @ 000002ac8f5a09c0] Qavg: 186.502
大体30秒くらいで圧縮ができました。╰(*´︶`*)╯
元ファイルは66MBに対して圧縮されたファイルは5MBまでサイズが小さくなっています。目で見てもほとんど動画の劣化は感じられません!
すごい!!
まとめ
今回、FFmpegで動画の一括圧縮処理をするため、その足掛かりとしてFFmpegのインストール手順と使い方について簡単にご紹介しました。
まだまだ勉強不足ですが、いろいろ試してみていち早くFFmpegを使いこなせるようになりたいです。
次回は、FFmpegのいろいろなオプションを検証してみたいと思います。
[次の記事]