FFmpegを使って動画から音声を抽出する

公開日:2019/11/12 更新日:2019/11/12
FFmpegを使って動画から音声を抽出するのサムネイル

abigail-keenan-QdEn9s5Q_4w-unsplash.jpg Photo by Abigail Keenan on Unsplash

はじめに

FFmpegは動画データを色々と加工したり変換したりできるコマンドラインツールです。LinuxやmacOS、一応Windowsでも使用できます。動画データについては大体何でもできる感があるぐらい非常に色々な機能を持っています。この記事では、FFmpegを使用して、MP4形式の動画ファイルから音声を抽出して、それをMP3等の音声ファイルとして保存する方法を簡単にまとめます。

FFmpegについて

以下がFFmepgの公式サイトになります。

www.ffmpeg.org

A complete, cross-platform solution to record, convert and stream audio and video.

Linux、macOS、Windowsそれぞれのインストーラやパッケージファイルは以下に置いてあります。

www.ffmpeg.org

Get packages & executable files

前提と環境

以下が前提となります。この記事ではUbuntu18.04でFFmpegを使いました。

  • OS : Ubuntu18.04
  • FFmpegはインストール済とする

Linuxの場合はFFmpegのインストールはとても簡単で、Ubuntuならばsudo apt install ffmpegで可能です。他のディストリビューションでも同様にパッケージマネージャーを使用してインストールできると思います。macOSでもbrew等を使ってインストールできます。

FFmpegのバージョンを確認する

FFmpegがインストール済であるかどうかは以下のように端末でバージョンを確認してみると分かります。

$ ffmpeg -version
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil      55. 78.100 / 55. 78.100
libavcodec     57.107.100 / 57.107.100
libavformat    57. 83.100 / 57. 83.100
libavdevice    57. 10.100 / 57. 10.100
libavfilter     6.107.100 /  6.107.100
libavresample   3.  7.  0 /  3.  7.  0
libswscale      4.  8.100 /  4.  8.100
libswresample   2.  9.100 /  2.  9.100
libpostproc    54.  7.100 / 54.  7.100

上記のように表示されればインストールされています。なお、2019年11月時点では、FFmpegの最新バージョンは4.2.1であるため、パッケージマネージャーでインストールすると結構古いバージョンがインストールされます。最新版を使いたい場合は、冒頭に載せたFFmpegのダウンロードページからパッケージをダウンロードしてインストールする必要があります。

動画ファイルから音声ファイルを作成する

以下のようにffmpegコマンドにいくつかのオプションを加えて動画ファイルから音声ファイルを作成します。以下を実行すると、myvideo.mp4という動画ファイルから音声だけを抽出して、音声ファイルとしてmymusic.aacで保存します。

$ ffmpeg -i myvideo.mp4 -vn -acodec copy mymusic.aac

上記で使用しているオプションは以下の通りです。

項目 内容
-i 音声を取り出す動画ファイル名、パス指定。例:-i 動画ファイル名
-vn 出力をビデオ無しにする。
-acodec copy 元の同ファイルの音声コーデックをそのまま使用して音声ファイルを作成する

ちなみに、動画ファイルで元々使用されている音声コーデックを確認するには、以下のようにffprobeを使うことで確認できます。

$ ffprobe myvideo.mp4 
ffprobe version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2007-2019 the FFmpeg developers

(...途中省略...)

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'myvideo.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp41mp42isom
    creation_time   : 2018-09-15T15:04:21.000000Z
  Duration: 00:00:27.26, start: 0.000000, bitrate: 782 kb/s
    Stream #0:0(jpn): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 186 kb/s (default)
    Metadata:
      creation_time   : 2018-09-15T15:04:21.000000Z
      handler_name    : Core Media Audio
    Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 578 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 60k tbc (default)
    Metadata:

上記の結果の中に、Audio: aacとあり、これが音声コーデックになります。

音声コーデックを変換して保存する

抽出する音声データのコーデックを指定したい場合は以下のようにします。以下はMP3として音声データを保存する場合です。

$ ffmpeg -i myvideo.mp4 -f mp3 -ab 192000 -vn mymusic.mp3

上記で使用しているオプションは以下の通りです。

項目 内容
-f 音声コーデックを指定する。例:-f mp3
-ab 音声コーデックのビットレートを指定する。例:-ab 192000(192000 = 192kbps)

抽出する音声の範囲を指定する

以下のように-ss-tオプションを組み合わせることで、動画ファイルの指定した開始位置、終了位置の間部分だけの音声を抽出できます。以下はmyvideo.mp400:15(冒頭から15秒)から01:10(1分10秒)部分の音声をmymusic.aacとして保存します。

$ ffmpeg -i myvideo.mp4 -ss 00:00:15 -t 00:01:10 -vn -acodec copy mymusic.aac

参考文献

FFmpegでできることは非常に多く、色々なサイトを参考にさせて頂きました。以下にいくつか記載します。

qiita.com

FFmpegは、動画形式変換、動画ダウンロードなどで大変助かります。

github.com

using ffmpeg to extract audio from video files

まとめ

FFmpegで動画ファイルから音声を抽出して保存する方法を簡単にまとめました。FFmpegは非常に高機能で色々なことができるので、動画ファイルを何かしら加工したり変換したりしたいと思った場合は一度見てみるといいかもしれません。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。