
WebM と MP4 の相互変換
ffmpeg が webm も扱えるのでこれでOK
ffmpeg のインストール
ffmpeg は、 Mac なら Homebrew からいれるのが楽ちんです
brew install ffmpeg
使い方
ffmpeg -i input.webm -c:v copy -c:a copy output.mp4
逆の場合も同様でいけそう。
-c というのはコーデックを指定するオプションで、さらにビデオ用とオーディオ用でオプションが分かれてきます。
- ビデオなら
-c:vまたは-codec:v - オーディオなら
-c:aまたは-codec:a
特定のコーデックでエンコードし直すならばここに続けてコーデックを指定しますが、逆に入力側と同じまま無変換でよいならば、copy というキーワードが使えます。
-c:v copy とか -c:a copy といった感じ
さらに、オーディオもビデオも入力側と同じコーデックで良いならば
-codec copy でもOK。(この場合は省略はできないっぽい?)
よって、編集ソフトが対応してないとかで往復しないといけないときなんかは
ffmpeg -i input.webm -codec copy output.mp4
が一番シンプルな指定になるっぽいです。
copy が使えない場合
WebM でよく使われている、 VP8/VP9(映像) や Opus(音声) といったコーデックは、MP4 コンテナに未対応のため、
webm から mp4 にする場合そのままだとエラーになってしまう場合があるようです。
なので、その場合はコーデックをコピーするのではなくて、MP4 が対応しているコーデックで再エンコードする必要があります。
たとえば、H.264/AAC で再エンコードするならばこんな感じになるみたいです。
ffmpeg -i input.webm -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4
なんかまた新しいオプションが増えました。
-crfは Constant Rate Factor の略で、そのまま訳すと「定数率係数」となります。なんだそれって感じですが、品質の設定で、数値が少ないほうが高品質になる代わりにサイズが大きくなるとのこと。- 一般的には
18から23の間にするのが良いとされていて、18でもほぼ無劣化に見えるくらいの品質になるらしいです。 0にすると圧縮しないため、劣化も起きません。が、当然ファイルはデカくなります。生データのままアーカイブしておきたいときとか、編集中のデータなどはこの設定がよさそうですね- 逆に
51にすると、最低品質となり、ものすごい劣化するみたいです。動作テストとかぐらいでしか使わないかも。 - ちなみにデフォルトは
23なので、今回の設定は、あってもなくても同じ結果になります。
- 一般的には
-b:aはオーディオのビットレートです。ここでは 128k となってます
余談
ちなみに姉妹フォーマットの WebPは「ウェッピー」って読むらしい(ウェブピーじゃない)のですが、こっちは普通に「ウェブエム」らしい。
「うぇぶん」みたいなんじゃないのね。
いやなぁ、それはそれで発音しにくいけど…
参考
上記に加え Gemini に相談にのってもらってます
