お金ないVJが映像関係をffmpegでゴリ押す2023
りけいです
Envatつかってますか
エンバト使ってると4KとかProressとかガンガン飛んできます
そんな時にエンコードするわけですけどそれを出来るだけ楽に安価に大量にやりたいもんです
業界スタンダードは多分AdobeのエンコーダーなんですけどAdobe税を払わない時にどうするかって話です
そういう時にffmpegでゴリ押そうっていうことを物覚え的に書く感じです
☆わかってる人向け
配信のことには触れません
自分自身が記憶喪失になった時に助けになるもの って自分ルールがあるので結構簡単 / 端折って書いてます
しっかりかくとキリがなくて結局発表できなくなるので仕方ないね
できること
いろんなものをhap とかH264に書き出したり
動画関係のことを基本全部できます
環境構築はまあまあめんどくさいけど無料で結構信用度のあるエンコード等々ができるので便利です
例えば当日いきなりそれぞれ5GBもあるMVを大量に渡された時とかにffmpegをサブのPCに突っ込んでおくだけギリギリまでどうにかできたりします
今回は僕が使いまくってる特定の色をalphaにしてHap-alphaに突っ込んで透過の動画を作る方法に関しても示します
GBの動画から事前にクロマキー抜きをできる結構便利なやつです
個人的には割と確度高めじゃないかなって思います VDよりかはぜったい綺麗に抜けます
簡単にalphaにすればいいじゃんって言ってたけど想像以上にやり方知らない人が多いっぽいんで触れます
★★★★★★★★★たいせつなおしらせ★★★★★★★★★
windowsの最新のバージョンだとhapが扱えないらしいです
最近環境を構築しなおして初めて知りました
そこで、20231110早朝時点でつかることが確認、というか大昔のパソコンから引き揚げてきたやつをここにはっつけておくのでここにあることをやりたい人で、hapが動かないときはこっちに差し替えてみてください
https://drive.google.com/file/d/1uXWFaReI1LL17ufAi-CTPNz2Lj5Un5Fb/view?usp=drive_link
ffmpeg
youtubeとかのエンコードとかにも使われてるらしいやつです
なにをやるにしてもまずインストールしないとダメ
macでのインストール
macはここみてインスコしてください
とりあえずDJ用でもなんでもmacがあってVJをやってる人はインストールしておくと本当に大変な時に助かります
windowsでのインストール
昔はもっとわかりやすいのあった気がするけど今調べたらこれが一番わかりやすそうな気がする
Vjやってる人はとりあえずインストールしておこう
ffmpeg の使い方
基本的にコマンドベースで動かします
まず公式のところに乗ってるやつです
ffmpeg -i input.mp4 output.avi
基本はこれです
そんで「ffmpeg h264 変換」とか調べると
いろんなコマンドを示していただいてるので用途に合ったものを選んで使いましょう
基本的に覚えておいておけばいいのはこれぐらいです
基本的な話
基本的に
inputpath に元動画のパス
outputpath に出力先のパス
を自分で記述することが必要です
ターミナルとかでならコマンドの画面にドラックアンドドロップで記述できるのでいい感じに頑張ってください
気づくまで僕は手書きしてました
Meの使い方
僕は以下の手順で色々やってます
internet archive とかの低い解像度の動画はそのままhapに変換してます
低い解像度を1080にしたところで何にもならないし、低いやつは低いままの方が容量を小さくなるのでそうしてます
h.264で変換してるのは無垢な mac / windows でサムネイルだったり再生だったりができるからで簡単な分別ができる
あとストレージ的に軽いので再生速度とかをいじらない素材ならそのままH.264で使えるからそのまま突っ込んでます
全部Hapにしたらストレージ何本さしても足りないから仕方ないね
H.264に変換する
ffmpeg -i inputpath.mp4 -movflags faststart -vcodec libx264 outputpath.mov
んな動画でもh264にしてくれます
でもhapとかからだとあんまり確度高くないなって思ってます
音声を削除してH.264に変換する
-an ってやつを使います
ffmpeg -i inputpath.mp4 -movflags faststart -vcodec libx264 -an outputpath.mov
h264に変換しつつ音声を消します
VJとか映像出しのときは動画に音声が乗ってると都合が悪いことがちょいちょいあります
それに対して「ポンだししながら叩きもして欲しい」みたいな時には映像側から音を出したりします(ほんまか???)
この時、映像出しにもオーディオラインが回ってるので、絶対に音が出てほしくない時に音が出ないようにすることが重要になります
そういう時に音声を事前に消しておくことで問題切り分け / ポカ避けができます
あと容量が小さくなるので雑に使う素材でもストレージ小さくできるのでおすすめです
( VDJやるって時にbeepleの音声がスピーカーから流れた時は大笑いした )
FHD1080 にして H.264 に変換する
ffmpeg -i inputpath.mp4 -movflags faststart -vcodec libx264 -vf scale=-1:1080 outputpath.mov
4Kとかの動画をFHD1080 1920*1080 に変換します
なんかいろんな間引き方をしてますがそこまで考えてもって感じなのでここでは気にしません
VJで4K動画さした瞬間にクラッシュするのは結構よくあることなのでとりあえず手元の動画をやっておいた方が気持ちが楽になります
基本的なファンクションは
-vf scale=-1:1080
これを間に突っ込んでるだけです
「横幅を1080 にしてそれにいい感じ合わせるように縦のサイズを合わせて」
ってコマンドです
youtubeとかみてるとHD720 をこれでアップスケーリングして高解像度化とか言ってる人いますけどぼやけるので見た目の解像度は上がってないと思います
280p をやっても汚かったのでそうだと思います
こっちでも同じ機能にはできるんですけど
ffmpeg -i inputpath.mp4 -movflags faststart -vcodec libx264 -s 1920x1080 outputpath.mov
アスペクト比が違う 4:3 とかの動画を変換するときに変な横伸ばしをしたりするので上の方がいいと思います
参考にしたところ
HD720でH.264に変換
一個上のやつの数字が変わるだけ
ffmpeg -i inputpath.mp4 -movflags faststart -vcodec libx264 -vf scale=-1:720 outputpath.mov
HAPに変換する
基本的なことはここに全て書かれています
ここから引用していく感じです
ffmpeg -i imputpath.mp4 -vcodec hap outputpath.mov
コーディックをhapにしてっていうコマンド
-vcodec hap
を仕込んでる感じです
容量的な話をすると前述の資料の通り
本当に30倍ぐらいになります
H264で20GBぐらいの動画セットを変換したらHDDが吹っ飛びました
なんらかの方法で圧縮だったりができて容量削減できるらしいですけどコマンドベースでどう記述する + 本当にできるかわからないので書いてません
有識者いらっしゃいましたら教えてください
HAPの注意点 (ストレージ周りの話)
そこそこ重要なので枠つくって書きます
HAPにするとめっちゃファイルサイズが大きくなります
すると動画ひとつを読み出すのにも結構重くなるのでストレージの速さが超重要になってきます
いろんなVJがそこを気にしてSSDとかUSB-3.0やSATAでなくTBやNvme使えって叫んでるのはこの辺が理由です
同時に現場ストレージにHDDを使うなってのもここで、HAPだけでなく複数動画を読み込む場合はどうしてもrandom read に依存されます
そんでHDDはシークする関係でrandom readはどうしても弱くなります
だからPC自体のスペックとか関係なく動画の読み込み先がHDDだと処理が重くなる / もたつく ことが多いです
あと低音でピックアップヘッドが揺れて音楽ジャンルによってはHDDそのものが死ぬのでSSDを使おう
それでもHDD使うって言うならまあそれはそれでいいんじゃないです
僕も初めてたてのお金なかった頃はそうだったんで
FHD1080 にしてからHapにする
ffmpeg -i imputpath.mp4 -vcodec hap -vf scale=-1:1080 outputpath.mov
合わせ技です
基本的なやつはこの辺です
ffmpeg の応用
特定の色ををalphaにしてHap-alpahにする
2019年に調べてて思いついたやつだと思うのでインターネットをdigしても出てこないと思います
あわせ技みたいなもんだから自慢できるもんでもないけど
これはH264とかからalphaチャンネル持つ動画を作れたりするのでしれっと超便利です
一例として黒色をalphaにしてるのを示します
ffmpeg.exe -i inputpath.mp4 -vf colorkey=0x000000:0.01:0.15 -vcodec hap -an -format hap_alpha outputpath.mov
やってることは
・クロマキーの処理 (これは黒色)
・hap のコーディックにしてフォーマットを Hap-alphaに
そんで書き出し
すると、黒い部分が全てalphaになった動画を作ることができます
これが映えるのが最近新商品発表があったこの素材
これの黒いとこをHapにしておくだけで映像に乗せた時の挙動が大きく変わります
たとえば普通にOverで乗せると黒い部分が残るので塗りつぶされます
でも黒いところをalphaにしておくことでしっかり乗っけることができます
同様にGB素材とかを事前に透過するときとかに使えます
-vf colorkey=0x000000:0.01:0.15
-vf colorkey=color:similarity:blend
ここのcolorkeyの指定をすることで透過する色や深さを指定することができます
パラメータの意味は
ここを参考にして数値を決定してます
個人的にいろいろ試して後に紹介するコードを示しています
相当変な素材じゃない限りいい感じに抜けるのでいいんじゃないかなって思ってます
僕が使っている色の指定は
黒 0x000000:0.01:0.15
白 0xffffff:0.01:0.15
赤 0xff0000:0.01:0.1
青 0x0000ff:0.01:0.1
緑 0x00ff00:0.01:0.1
みたいな感じです
黒色はモーション系の素材のalpha化で境界の色差がめっちゃでかいので完全一致とか使っても結構いい感じになります
白系素材は彩度高くてでまぶしすぎる素材で適応するといい感じになるからたまーに使います
基本的に白黒以外で抜きたいときは 0.01 / 0.1 が打率高いイメージありますけど出来栄えによってちょいちょい変えてます
狙った色で抜きたい場合はカラーコードをいじって実装しよう
保存はalphaチャンネルを持ってるコーデックでないといけないのでH264とかはダメです
VJならとりあえずHap-alphaにしておけばいいんじゃねって思います
色を反転させる
ffmpeg inputpath.mp4 -vf colorlevels=rimax=0:gimax=0:bimax=0:rimin=1:gimin=1:bimin=1 outputpath.mov
これを突っ込むことで色の反転が可能です
色を反転させることを一番重要視してるのでコーデックとかはスルーにしてます
拡張子さえ合わせれば動画だけでなく画像とかにも出せるのでロゴの事前準備とかの時に使ったりします
Black_logo.png の時とかに使う感じ
動画のコーデックとかを見る
ffmpeg inputpath.mp4
何したいかわからん!
ってエラー吐きますけどその上に動画の情報が書いてあるのでたまーに使います
ffmpegをhapでぶん殴る (windowsのみ)
windowsとmacで話が違います
僕はとりあえずwindowsでエンコードすることが多かったのでbatですべてを解決できるようにしてあります
macは応用的なことを自動化するのをやり方がよくわかってなくてやってないです
もうちょっと理解があれば特定のパスの動画を突っ込むと出力フォルダにエンコードされたものを自動でエンコードして出力する
みたいなのをするbatだったり駐在処理をNASとかに走らせたいんですけどどうしてもコマンドスプリクトがよくわかってなくて作れてないです
これを先人の知恵をかじりがらいい感じに動くようにしていきます
batを書いてフルオートで複数のドラッグアンドドロップで動くようにする
以下に示した感じで、デスクトップ上にそれぞれの機能を持たせたbatを置いてほしくなったらすぐにエンコードできるようになってます
いろいろやると画像の自動透過とかをすべて自動でやってくれるようになってます
そんで中身はこんな感じです
cd F:\ffmpeg_non_touch\bin
:loop
if "%~1" == "" goto end
set filename2=%~p1%~n1_hap.mov
ffmpeg.exe -i "%~1" -vcodec hap -an "%filename2%"
shift
goto loop
:end
pause
exit
20230925 ついき
夏ぐらいに頭のffmpegのとこに行くコマンドいらないことに気がつきました
なので、より簡素に書くのであれば
:loop
if "%~1" == "" goto end
set filename2=%~p1%~n1_hap.mov
ffmpeg.exe -i "%~1" -vcodec hap -an "%filename2%"
shift
goto loop
:end
pause
exit
これで動きます
というか僕はこれにしてます
大本はググって出てきたやつをいろいろ作って形にして親父に助言もらったやつなんですけどもう一番参考にしたサイトがわからないので世界に開きます
ffmpeg bat 自動化
とか調べるといっぱい出てくるのでもっとしっかり調べるともっといろいろわかるかもです
僕は割と満足してるのでもういいかなって
ここは参考にした記憶がある
得られる挙動
movie1.mp4 をドラッグアンドドロップ
↓
ffmpegが頑張ってくれる
↓
movie1.mp4 と同じとこに movie_hap.mov
っていうのを同時にドラッグアンドドロップした数だけやってくれます
エンコードのリネームまで自動化してるので超絶便利です
注意点
・前提として初めの行の cd にffmpegがインスコされてるパスを指定する必要があります
20230925 ついき
正常にffmpegがインストールされていて、コマンドライン上で ffmpeg と入力して、処理を走らせれるならわざわざcd使ってパス拾いに行くことをしなくていいみたいです
大雑把で簡単に言えば環境変数の定義がしっかりできてれば省略できます
・一度に処理 / ドラックアンドドロップできる上限はだいたい700ぐらいで無限じゃない
これはパスを一時保存する領域の問題ぽくて解決方法調べたけどめっちゃめんどくさそうでやめました
ドラッグアンドドロップをやめればそれなりにできそうだけど現状困ってないのでいいかなって思ってます
自分用にいじる
a. エンコードしたやつの追加記名をいじる
set filename2=%~p1%~n1_hap.mov
ここの _hap の部分をいじることで追加する名前をいじることができます
なので
set filename2=%~p1%~n1_hogehoge.mov
ってやったやつに movie.mp4 を突っ込むと movie_hogehoge.mov ってなって出力されます
拡張子もいじることできるけど何刺してもたいてい動くmovが一番硬いと思います
b. ffmpeg の挙動を変えたい
ffmpeg.exe -i "%~1" -vcodec hap -an "%filename2%"
ここをいい感じにいじってください
ffmpeg.exe になってるのはこっちのほうがいいってどこかで見たからだったと思いますけど結構まちまちです
基本的に一つのコマンドプロンプトで一個づつ処理してくれます
ちなみ裏コードみたいな感じで
start ffmpeg.exe -i "%~1" -vcodec hap -an "%filename2%"
start ffmpeg.exe
と記述すると入力されたすべての動画を同時並行に処理し始めます
ほんとに並行処理始めるので生半可なストレージやCPU, ramだとブルスク一直線します
よくあるメモリとかじゃなくてCPU周りを絡んで落ちるので電源系とかにとんでもないぐらい影響を与える死に方です
正直ゲーミングノートとかでこの処理を書かないで一個づつ処理するようにした方がいいと思います
死ぬほど急いでる時に少量で致し方なく使うぐらいのイメージがいいと思います
200ぐらいをいやらせるとXeon 入ってる 42GB ram PCにNvmeでぶん殴っても処理が間に合いませんでした
まあそういうもんか
c. エンコードが終わったらパソコンの電源を落とすようにする
endのあとに
shutdown /s /t 0
って書くとエンコード終わりに電源を落としてくれます
でも保存確認とかあるとシャットダウンしないのでこのエンコードしか回ってない状況じゃないと正しく動きません
いれるとこんな感じ
@echo off
cd E:\ffmpeg_non_touch\bin
:loop
if "%~1" == "" goto end
set filename2=%~p1%~n1_FHD_Rescale.mp4
ffmpeg.exe -i "%~1" -vcodec libx264 -vf scale=-1:1080:flags=gauss -an "output\%filename2%"
shift
goto loop
:end
shutdown /s /t 10
exit
これはHD1080に変換してから全部終わった10秒後に電源消すやつ
寝る前とか外に出る前にエンコード回して終わったら電源消すみたいなことをしたい時に便利です
強いパソコンは長い時間動かすと電気代すごいですからね
macでスプリクト書く
僕はかけない人ない / 割とわからないから投げ出した人なのでいい感じの資料だけ置いていきます
macしかない人はがんばってみてください
追記 20240303
コメントいただいてました
らしいです!!!!!!
僕はシェルスクリプトに対しての知見がないのである人はいい感じの記事を書いてください!!!!!
FFWorks ( macのみ )
電脳空間でお寿司でメイドでドラゴンの黄色い虎のVJお嬢様にmacだったら何使えばいいかって聞いた時に教えてもらったやつです
内部でffmpegが走ってます
22€とおおよそ3000円ぐらい
でもこれはどんな数突っ込んでもしっかり処理してくれるのでめっちゃ楽です
実際にコマンドを書くわけではなくある程度GUIとして設定をすることができるので初めての人でも簡単に使えると思います
高度な記述もできると思うけどやり方見つけたら書きます
使い方とかはスクリーンショットをとれるmacでこれを書いてる時に改めて書こうかなって思います
おしり
長くなったので終わりです
3年前にかくかく言って結局3年かかりました
使ってる動画にも気にしてみると処理を軽くできたり、お高い映像編集ソフトなくてもそれなりのことができたりするのでいろいろ調べて試行錯誤してみるのをお勧めします
がんばっていきのころう!!!
来場者得点
ほぼ3年前に公開してたbatのかき集めです
ffmpegをインストールして、cdの場所書き換えてやれば使えると思います