はるすえすしーのぶろぐ

ブログのないようがないよう

ffmpegを用いてフォーマット変換(mp3⇔wav,画像⇔動画)

まぁじです。最初はpydupを使って変換しようと思ってたんですが、どうやらffmpegのラッパーらしいのでこちらをつかうことにしました。これはその備忘録です。

やること
  • ffmpegWindowsにインストール

  • パスを通す

  • ファイルの詳細を見る

  • mp3ファイル→wavファイルへの変換

  • wavファイル→mp3ファイルへの変換

  • 動画を複数枚の画像に変換

  • 複数枚の画像を動画に変換

  • 動画ファイルのオプション変更

ffmpegWindowsにインストール

ffmpegCUIで操作し、動画・音声を変換したり再生したりできるフリーソフトウェアです。

ここではWindowsのインストール方法だけ説明します(Linux/MacOS/Windowsすべて動くらしいです)。

ffmpeg公式サイトのダウンロードページにアクセスし、Windowsマークにカーソルを合わせると"Windows builds from gyan.dev"が出るのでクリックします。

f:id:halss:20210103223938p:plain

ビルドページに飛ぶので、スクロールしてreleaseの"~/ffmpeg-release-essentials.zip"をクリックするとダウンロードが始まります。

ちなみにessentialsよりfullの方が使えるライブラリが多いらしいですが、Windows標準で解凍できる圧縮ファイルがessentials.zipしかないのでダウンロードしてます。

fullをダウンロードしたいなら7-zipとかLHazのような解凍ソフトを窓の杜からインストールするといいと思います。

f:id:halss:20210103225341p:plain

※2021/1/3現在です。今は変化している可能性があります。

パスを通す

  1. Windows+Q

  2. 環境変数を編集」と入力

  3. pathをクリック

  4. 編集

  5. 新規

  6. 先ほどダウンロードしたffmpeg.exeの場所を登録

私の場合は\ffmpeg-4.3.1-2021-01-01-essentials_build\binにあったのでこれを追加しました。

f:id:halss:20210103230629p:plain

起動できるか確認

コマンドプロンプトを起動し、ffmpegと入力してバージョン等が出れば成功です。

$ ffmpeg
ffmpeg version 4.3.1-2021-01-01-essentials_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10.2.0 (Rev5, Built by MSYS2 project)
~~~~~~~~~~~~~~略~~~~~~~~~~~~~~

ファイルの詳細を見る

動画・画像ファイルを用意しffmpeg -i <filename>で詳細を表示します。

$ ffmpeg -i sample.MP4

ffprobe -i <filename>の方が怒られません。

$ ffprobe -i sample.MP4

mp3ファイル→wavファイルへの変換

用意した"sound1.mp3"をwavファイルに変換してみます。 ffmpeg -i <inputfile>.mp3 <outputfile>.wavでファイルを変換して出力できます。

$ ffmpeg -i sound1.mp3 sound1.wav

wavファイル→mp3ファイルへの変換

用意した"sound2.wav"をmp3ファイルに変換してみます。 上の逆で、ffmpeg -i <inputfile>.mp3 <outputfile>.wavでファイルを変換して出力できます。

$ ffmpeg -i sound1.mp3 sound1.wav

動画を複数枚の画像に変換

ffmpeg -i <inputfile>.mp4 <outputfile>.jpgでフレームレート×秒数[枚]の画像ファイルが生成されます。 ただし、出力ファイルはそのままだと重複してしまうので、%03dとして番号を振れます。(3桁で0埋め)

$ ffmpeg -i sample.mp4 sample%03d.jpg

また、オプションで1秒あたりの枚数(フレームレート)を変更することも可能です。

$ ffmpeg -i sample.mp4 -r 10 sample%03d.jpg

複数枚の画像を動画に変換

ffmpeg -i <inputfile>.jpg <outputfile>.mp4で動画ファイルが生成されます。 連番画像であれば動画にすることが可能なようですが、通常の(連番でない)画像における方法は不明です。

$ ffmpeg -i sample%03d.jpg sample.mp4

動画→画像の変換のようにフレームレートの設定や、コーデックの設定、macOSで開けるようにするなどができます。

$ ffmpeg -r 60 -i sample%03d.jpg -vcodec libx264 sample.mp4
$ ffmpeg -i sample%03d.jpg -pix_fmt yuv420p sample.mp4

あとがき

紹介した方法のほかにもGIFファイルへの変換やサイズ変更などかなり豊富にオプションが存在するのでいろいろとみてみることをお勧めします。

参考文献

それFFmpegで出来るよ! - Qiita

FFmpegで動画をGIFに変換 - Qiita

最新ffmpegのオプションまとめ - MobileHackerz Knowledgebase Wiki