いっこ前の記事に書いてたofxVideoRecorderを使うにはFFmpeg入れないといけないんだけど、
ちょっと備忘録的に新規インストールまでと今回やってたことをつらつらーっとメモ書き。
Mac OS X 10.9 Mavericksで開発環境を整える想定。
・不可視ファイル出す
$ defaults write com.apple.finder AppleShowAllFiles true $ killall Finder
・homebrew入れる
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
・updateとか
$ brew update $ brew doctor
ここで以下のようにエラる時は最新のXcodeとCommandlineTools入れて、AppStoreからCommandlineToolsを最新にアプデすればエラーが消える。
Warning: A newer Command Line Tools release is availableUpdate them from Software Update in the App Store.
・再度brew doctor
$ brew doctor Your system is ready to brew.
・ffmpeg入れる
$ brew install ffmpeg
・入ってるもの一覧確認
$ brew info ffmpeg Build: pkg-config ✘, texi2html ✘, yasm ✘ Recommended: x264 ✔, faac ✔, lame ✔, xvid ✔ Optional: freetype ✘, theora ✘, libvorbis ✘, libvpx ✘, rtmpdump ✘, opencore-amr ✘, libvo-aacenc ✘, libass ✘, openjpeg ✘, speex ✘, schroedinger ✘, fdk-aac ✘, opus ✘, frei0r ✘, libcaca ✘, libbluray ✘, libquvi ✘, libvidstab ✘
とりあえず使いたいのあればこんな感じでインストール
$ brew install fdk-aac
・ffmpegのコーデック一覧確認
$ ffmpeg -codecs
ここでコーデックにE(Encoding supported)が入ってないとエンコード時に使えない。
大概、mp3に必要なlibmp3lameとかvp8に必要なlibvpxが入ってないよーってなると思うので
必要なコーデックを使う為のライブラリを適宜入れてく。
これをoFから生で叩くとこんな感じ。
#include <stdlib.h> string cmd = ofFilePath::getAbsolutePath("ffmpeg") + " -i "+ ofFilePath::getAbsolutePath("out.mp4") + " -vcodec libx264 -acodec aac -strict -2 "+ ofFilePath::getAbsolutePath("./h264/newout.mp4"); char* fname = new char[cmd.length()+1]; memcpy(fname, cmd.c_str(), cmd.length()+1); system( fname );
・string -> char 変換
#include <stdlib.h> std::string file = "c:\\hoge.jpg"; int len = file.length(); char* fname = new char[len+1]; memcpy(fname, file.c_str(), len+1);
以下はいろいろ検証で触ってたときのテストコマンドのメモ
・960×540→670×540にクロップ
$ ffmpeg -i in.mov -vf "crop=670:540:145:0" out.mov
・上下黒帯入れて670×670に変換
$ ffmpeg -i in.mov -vf "scale=670:540,pad=670:670:0:65:black" out.mov
・500×500にリサイズしつつ1.5秒だけ切り出し
$ ffmpeg -i in.mov -vf "scale=500:500,select=gte(t\,0)*lte(t\,1.5)" out.mov
・映像からmp3コーデック、512kpbsで音声ファイルを .mp3 で書き出し
$ ffmpeg -i in.mp4 -acodec libmp3lame -strict -2 -ab 512k sound.mp3
・mapで映像の音を別ファイルで差し替え (0:0,0:1と1:0から下記ストリームを使う)+頭0.1秒カット
$ ffmpeg -i video.mp4 -i sound.m4a -map 0:0 -map 1:0 -vf "select=gte(t\,0.1)" newvideo.mp4
・映像と音をそのままファイル連結(映像、音共にコーデック合わせてからじゃないとエラー)
$ ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "concat=n=2:v=1:a=1" output.mp4
・HTML5 VIDEOタグ用に.mp4 .ogv .webmの映像音コーデックサンプル
// .mp4 -vcodec h264 -acodec libfdk_aac -ac 2 -vol 256 -ab 512k // .ogv -vcodec libtheora -acodec libvorbis -vol 256 -ab 512k // .webm -vcodec vp8 -acodec libvorbis -vol 256 -ab 512k
こんなもんかな?
you