ちょこちょこ動画編集をしたり、撮影にお付き合いしていると、動画の変換が必要なケースが出て来ます。4Kで撮影したけど編集する人には2Kで渡したい、とかね。
どうやって変換しようか、と思っていたのですが、FFmpegがとても便利に使えることに気づいたのでコマンドなどをメモしておきたいと思います。完全に備忘録です。
というわけで、FFmpegですよ、奥さん。
動画・音声変換にとても便利なソフト、というのは知っていたのですが、今まであまり真剣に使っていませんでした。
最近、動画をこねこねしたり、音楽をこねこねしたりする中で、データのコンバートが必要になるケースが増えてきたので真剣に使い始めました。
いやこれいい!
というわけで、とりあえずコマンドラインで使えるようにメモをしておきます。
FFmpegのインストールについて
インストールについてはいろんなサイトで解説されているのでそちらに・・・・
Win版はこちら
FFmpegのインストール手順と使い方(Windows版) | じゃぶじゃぶげーむ
Mac版はこちら(HomeBrew使ったインストール方法ばかりなのですが、他の方法はないのか・・・)
https://codelab.website/homebrew-ffmpeg/
Linux は調べて下さい。そんなに面倒じゃないと思う・・・
FFmpegでの基本的なコンバートコマンド
とりあえずパスは通ってる状態、というのを前提にします。
基本的なコンバートコマンドは下記です。
コマンドですので、コマンドラインで入力します。
Windowsなら「コマンドプロンプト」や「PowerShell」、Macなら「ターミナル」でしょうか。
更に補足すれば、コンバートしたい動画ファイルがあるフォルダで入力する場合です。もちろんファイル名を指定する際にフォルダ名などを付加すれば他のフォルダのファイルも指定可能です(入力/出力共に)。
ffmpeg -i 入力ファイル名.拡張子 出力ファイル名.拡張子
簡単ですね・・・・
ちなみにこの場合、変換するファイル形式は「拡張子に依存」します。
例えば、movietest.movファイルをmp4ファイルへ変換したい場合は
ffmpeg -i movietest.mov movietest.mp4
で変換できます。簡単!
FFmpegで4Kから2Kへ動画のサイズを変更する
4Kで撮影したけど、マシンスペックが低めで編集すると重いのでとりあえず2Kで編集したい、という場合など、それなりに用途があるんじゃないかと思われるのが 4K > 2K変換。
これもFFmpegなら簡単です。
ffmpeg -i input.mp4 -vf scale=-1:1080 output.mp4
ちなみに”-vf”は動画のコンバートの際に様々な処理を行いたい時に指定します。
今回はサイズの変換をしたかったので”scale=”というコマンドを指定しました。
“scale=” の後はサイズの指定になります。例えば ”1920:1080” と直接サイズを指定することも出来ますが、上記のように “-1:1080” と指定するとアスペクト比(縦横比)をそのまま保った状態で縦を1080にすることができます。
FFmpegで動画から音声だけを抜き出す
FFmpegを使うと、動画から音声のみを抜き出すことが出来ます。
動画から音だけを抜きたいこと、ありますよね。
ffmpeg -i input.mp4 output.mp3
はい、これだけです。
出力ファイルの拡張子を音声の拡張子にするだけです。
但し、この方法だと音声にエンコードがかかってしまうことがあります。
そのままの音声を抜き出したい場合は一度音声のフォーマットを調べましょう。
ffmpeg -i input.mp4 (略) Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default) (略)
aac形式ですのでm4a形式で抜き出せばいいようです。
その場合は出力ファイル名の前に “-acodec copy”という文字列を加えます。
ffmpeg -i input.mp4 -acodec copy output.m4a
これで音声データをそのまま抜き出すことが出来ます。
CPUではなく、GPUで処理したい
少しだけ高度なことを。
通常、FFmpegはCPUでコンバートの処理を行います。が、遅い!!重い!!
コンバート中、ヒマだからとブラウザ開くけど重い!
ので、GPU使えないかな、と思って調べてみたら使えました!
例えば mp4 ( h264 ) へのコンバートの場合
ffmpeg -i input.mp4 -vcodec h264_nvenc output.mp4
でGPUでコンバートしてくれます。
今回付けたオプション “-vcodec h264_nvenc” の “_nvenc”部分がハードウェアエンコードに関するコマンドになります。
「ビデオコーデックとして h264のNVencを指定するよ」と。
「NVenc」がNVidiaのハードウェアエンコード機能を使うよ、という意味になります。
ちなみに使用できるエンコードの種類は
ffmpeg -encoders
で一覧表示が可能です。
この中の “_nvenc”が付いた形式であればGPUエンコードが可能です(ただ、それほど多くないと思います。H264/hevc(H265)くらい)。
動画の時代だからこそ活用して欲しい FFmpeg
というわけで、昔から動画をこねこねしてる人にとっては当たり前に使われているFFmpegですが、これからもっと活用されるのかな、と。
上記で紹介したコマンドはほんの一部(私が主に使いそうなものだけ・・・)ですが、他にも静止画を動画にしたり、動画を静止画にしたり、と様々な機能があります。
気になる方は是非検索してみて下さい。
動画データの整理などでも使えると思いますので是非活用してみて下さい。
GUIで行いたければこういうソフトがあります。歴史あるソフトですね。