Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

FFMPEGでmp4動画から音声抽出

最近またOpenCVを触って楽しんでおりますw。
OpenCVは色々出来て面白いですね!!
ですが、動画で遊んでいるとどうしても音声も触りたい欲が強くなってしまうのですよね。。。

ということで今回は音声関係について少し触れていきたいと思います。
内容は、mp4動画から音声抽出の方法です。



■事前準備

題名にも記載しました通り、今回はFFMPEGを用いてmp4動画から音声を抽出します。
f:id:Elsammit:20210508002850j:plain

FFMPEGとは、、、
公式には下記文言がトップに記載されておりました。
A complete, cross-platform solution to record, convert and stream audio and video.

要するにクロスプラットフォームで録画・録音・変換・ストリーミングが行えますよ。
というライブラリになります。

ライセンスはLGPLないしはGPLです。

FFMPEGがインスト^ールされていない場合には下記を実行してインストールしておいてください。
WIndows
下記が細かくまとめられているため参考にしてください。
fukatsu.tech

Linux
下記コマンドを実行ください。

sudo apt install ffmpeg

以降の実行ですが、
・OS:Ubuntu 16.04
で実行した内容をご紹介します。
※おそらくWIndowsでも同様の手順で音声の抽出が可能かと思いますが。

■mp4動画から音声を抽出

では実際にffmpegを用いて音声を抽出してみます。
方法はこちら。

ffmpeg -y -i 動画名.mp4 出力音声名.mp3

たった1行です!!

ついでですが、こちらのように-abオプションを付けるとビットレートの指定も行えるようです。

ffmpeg -y -i -ab 127 動画名.mp4 出力音声名.mp3

■動画の情報を調べてみる

ffmpegを用いると動画の情報を一覧表示で確認することが出来ます。
コマンドはこちら。

ffmpeg -i 動画名.mp4

こちらのコマンドを実行すると下記のように動画のコーデックや音声情報、作成日時などが表示されます。

ffmpeg version 2.8.17-0ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609

~~~

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '動画名.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41isomavc1
    creation_time   : 2020-09-20 02:22:36
  Duration: 00:00:41.22, start: 0.000000, bitrate: 1598 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 960x540, 1340 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 60k tbc (default)
    Metadata:
      creation_time   : 2020-09-20 02:22:36
      handler_name    : L-SMASH Video Handler
      encoder         : AVC Coding
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 253 kb/s (default)
    Metadata:
      creation_time   : 2020-09-20 02:22:36
      handler_name    : L-SMASH Audio Handler

ですが、

ffmpeg -i 動画名.mp4

ですと、

At least one output file must be specified

といったエラー??が出力されるようです。
あまりよろしくない場合には、

ffprobe -i 動画名.mp4

を実行すれば上記メッセージが表示されずに情報の表示が行えます。

■(おまけ)動画から音声のみ削除

ffmpegは動画の変換も行うことが出来ます。
例えば、mp4からgifに変換する場合には、

ffmpeg -i 動画名.mp4 出力動画名.avi

を実行すればgif形式の動画が生成できます。

動画から音声のみ削除する場合にはこちらのコマンドを実行すればOKのようです。

ffmpeg -i 動画名.mp4  -an 出力動画名.mp4

オプションとして-anを付与するのみですね。

■最後に

今回はffmpegを用いて動画から音声の抽出を行ってみました。
ffmpegは今回ご紹介した機能以外にも便利な機能があります。
また、折を見てご紹介できればな。と思っております!!

音声抽出も出来たので抽出した音声を用いて少し遊んでみたいと思います。
また面白いことが分かったり作れたらこちらで紹介していきます。