大韓民国観察記Neo

韓国の、どうでもいい、重箱の隅をつつくブログ。

ffmpeg 概要・動画リサイズ

システム:Fedora29、Fedora30
インストール方法:#dnf install ffmpeg
(rpmfusion-free,rpmfusion-nonfreeのリポジトリー登録が必要)
Fedoraだとrpmfusionにパッケージがあるからいいけど、他のディストリビューションでは、コンパイルしなければならないからたいへん。

 

ffmpegの概要

超高性能動画編集ソフト。プロも仕事で使ってしまうくらいの性能はある。

GUIではなく、コマンド操作という特性のため、バッチファイルを組んで、ソフトにお任せで、大量の動画を一気に加工できるから。

もちろん処理にかかる時間は、容量が大きければ、昼夜ぶっつづけで1週間とか2週間とかかかるけど、人間の介入が必要ないので、コンピューターを動かしておけば、人間は遊んでいても一向に構わないというところがプロが使ってしまう理由。

しかも、動作は安定していて、動画編集につきものの画像劣化はほとんど起こらない。
ほぼ全ての動画形式に対応している。
動画からMP3ファイルを作ることもできる。

通常、Windowsのソフトで動画処理する場合、コンテナとかフレームとかややこしい概念を理解していないとまったく動画処理ができないが、このソフトの場合、再生時間と動画ファイル形式の違いという概念がわかっていれば、とりあえず動画処理をしてくれる。

これは、何か画像エフェクト処理をするたびにエンコードをやりなおすから可能となっている。
無圧縮動画ファイルで処理をするならば、動画の劣化は起らないが、現実的なハードディスク容量に収まるような動画ファイルにしようとすると、不可逆圧縮ファイルを使用しないわけにはいかないので、エンコードをするたびに、少しづつ動画は劣化していく。

そんなすごいことをするソフトだから、さぞかし、CPUの能力が必要で、メモリーも大量に喰うだろうとおもいきや、エクセルが動く程度でOK。
それは、編集中、動画をまったく表示しないから。
GUIインタフェイスを持たないソフトで、UNIXコマンドのように振る舞う。

普通、シェルスクリプトを組んで、処理はコンピューターに丸投げする形で使用する。

f:id:sirius-B:20191211011349p:plain
ffmpegの味もそっけもない動作画面。
ただし、これだから、莫大なメモリーがなくても大量の動画を編集できる

ちなみに、CPUがマルチコアなら、全てのコアに目一杯仕事を割り振ってくれるから、全部のコアの稼働率が90%以上になるコア数が多ければ多いほど無駄なく処理のスピードが上がる
ゲーミングPCでffmpeg使ったら、あまりの爆速ぶりにびっくらこいた。

 

4K動画 → HD(720p:HDTVハイビジョン) 変換スクリプト
downs.sh (3GHzクラスのシングルコアなら、これで処理は半日かかる)

#!/bin/bash
ffmpeg -i C0171.MP4 -vf scale=-1:720 C0171-720.MP4
ffmpeg -i C0172.MP4 -vf scale=-1:720 C0172-720.MP4
ffmpeg -i C0173.MP4 -vf scale=-1:720 C0173-720.MP4
ffmpeg -i C0174.MP4 -vf scale=-1:720 C0174-720.MP4
ffmpeg -i C0175.MP4 -vf scale=-1:720 C0175-720.MP4
ffmpeg -i C0176.MP4 -vf scale=-1:720 C0176-720.MP4
ffmpeg -i C0177.MP4 -vf scale=-1:720 C0177-720.MP4
ffmpeg -i C0178.MP4 -vf scale=-1:720 C0178-720.MP4
ffmpeg -i C0179.MP4 -vf scale=-1:720 C0179-720.MP4
ffmpeg -i C0180.MP4 -vf scale=-1:720 C0180-720.MP4
exit 0


4K動画 → 規格外サイズ(640x480) 変換スクリプト
downs2.sh (3GHzクラスのシングルコアなら、これで処理は半日かかる)
サイズ指定が少々違っていても、ffmpeg側で適当に解釈してくれて、指定したサイズに近いサイズに変換してくれる。パソコンが古くて動画再生がままならない時重宝する。

#!/bin/bash
ffmpeg -i C0171.MP4 -s 640x480 C0171-480.MP4
ffmpeg -i C0172.MP4 -s 640x480 C0172-480.MP4
ffmpeg -i C0173.MP4 -s 640x480 C0173-480.MP4
ffmpeg -i C0174.MP4 -s 640x480 C0174-480.MP4
ffmpeg -i C0175.MP4 -s 640x480 C0175-480.MP4
ffmpeg -i C0176.MP4 -s 640x480 C0176-480.MP4
ffmpeg -i C0177.MP4 -s 640x480 C0177-480.MP4
ffmpeg -i C0178.MP4 -s 640x480 C0178-480.MP4
ffmpeg -i C0179.MP4 -s 640x480 C0179-480.MP4
ffmpeg -i C0180.MP4 -s 640x480 C0180-480.MP4
exit 0