FFmpegを使って動画から音声を抽出する
![FFmpegを使って動画から音声を抽出するのサムネイル](https://virment.com/images/2019/11/abigail-keenan-QdEn9s5Q_4w-unsplash.jpg)
Photo by Abigail Keenan on Unsplash
はじめに
FFmpegは動画データを色々と加工したり変換したりできるコマンドラインツールです。LinuxやmacOS、一応Windowsでも使用できます。動画データについては大体何でもできる感があるぐらい非常に色々な機能を持っています。この記事では、FFmpegを使用して、MP4形式の動画ファイルから音声を抽出して、それをMP3等の音声ファイルとして保存する方法を簡単にまとめます。
FFmpegについて
以下がFFmepgの公式サイトになります。
A complete, cross-platform solution to record, convert and stream audio and video.
Linux、macOS、Windowsそれぞれのインストーラやパッケージファイルは以下に置いてあります。
前提と環境
以下が前提となります。この記事では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.mp4
の00: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でできることは非常に多く、色々なサイトを参考にさせて頂きました。以下にいくつか記載します。
まとめ
FFmpegで動画ファイルから音声を抽出して保存する方法を簡単にまとめました。FFmpegは非常に高機能で色々なことができるので、動画ファイルを何かしら加工したり変換したりしたいと思った場合は一度見てみるといいかもしれません。
関連記事
- 公開日:2020/02/16 更新日:2020/02/16
圧縮、暗号化、リモート対応の差分バックアップを作成できる「Borg Backup」の使い方
圧縮、暗号化に対応し差分バックアップを作成できるソフトウェアである「Borg Backup」をUbuntuにインストールして使ってみたのでその手順をまとめます。「Borg Backup」はLinux、macOSに対応しています。
- 公開日:2020/02/14 更新日:2020/02/14
自分専用の後で読むサービスを構築できる「Wallabag」をUbuntu + Nginxで構築する手順
後で読むサービスのPocketにかなり近く、機能豊富なオープンソースのWallabagをUbuntuにインストールしたのでその手順をまとめます。
- 公開日:2020/02/13 更新日:2020/02/13
モダンで美しいRSS&ポッドキャストリーダー「Winds」をUbuntuで使用する
RSSリーダーアプリは色々ありますが、結構見た目が古く更新されていないものも多いです。Windsはモダンな見た目で綺麗な上、WebサイトのRSSフィードだけでなくポッドキャストのフィードにも対応しています。この記事ではWindsをUbuntuにインストールして使用する手順をまとめます。
- 公開日:2020/02/12 更新日:2020/02/12
ファイル単位で暗号化して保存できるCryptomatorをインストールして使う手順
Cryptomatorは、ファイル単位での暗号化が可能なソフトウェアです。この記事では、UbuntuにCryptomatorをインストールする手順と使い方をまとめます。
- 公開日:2020/02/07 更新日:2020/02/07
Jitsiで特定ユーザーのみビデオチャットを作成できるように設定を変更する
URLを発行するだけでブラウザでビデオチャットを開始できるオープンソースのJitsiで、特定ユーザーのみが新しいチャットルームを作成できるよう設定を変更したのでその手順をまとめます。
開発アプリ
![](/app-icon.png)