ffmpegによる動画ファイルからの音声抽出
ffmpegとは
ffmpegは動画及び音声を記録・変換・再生するためのOSSです。
https://ja.wikipedia.org/wiki/FFmpeg
今回の環境
Google Compute Engine上で検証を実施しました。
Debian Linuxでの手順となります。
Linux instance-1 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64 GNU/Linux
インストール
パッケージのインストールのみとなります。
非常に簡単です。
$ sudo apt-get install ffmpeg ~省略~ Do you want to continue? [Y/n] Y ←Yを入力します。
操作方法
詳細については公式HPをご確認頂ければと思います。
https://www.ffmpeg.org/
動画情報の確認
下記コマンドで動画ファイルの詳細を確認できます。
$ ffmpeg -i 動画ファイルのパス
例
$ sudo ffmpeg -i test.mov ffmpeg version 3.2.12-1~deb9u1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --prefix=/usr --extra-version='1~deb9u1' --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-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --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-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libavresample 3. 1. 0 / 3. 1. 0 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mov': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt encoder : Lavf58.12.100 Duration: 00:02:57.59, start: 0.000000, bitrate: 3666 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 3532 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) Metadata: handler_name : DataHandler encoder : Lavc58.18.100 libx264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : DataHandler At least one output file must be specified
動画から音声ファイルを抽出する
下記のコマンドにて動画から音声ファイルを抽出します。
細かなオプションは色々あるのですが、変換先の拡張子を指定すると勝手に変換をしてくれるようです。
かなり便利です。
$ ffmpeg -i 動画ファイル 変換後の音声ファイル
例 movファイルからflacファイルを抽出
# 動画から音声を抽出 $ ffmpeg -i test.mov test_stereo.flac # 音声ファイルの確認 $ sudo ffmpeg -i test_stereo.flac ffmpeg version 3.2.12-1~deb9u1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --prefix=/usr --extra-version='1~deb9u1' --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-libebur128 --enable- libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame -- enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --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-libxvid --enable-libzmq --enable-libzvbi --enable-omx -- enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r -- enable-libopencv --enable-libx264 --enable-shared libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libavresample 3. 1. 0 / 3. 1. 0 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Input #0, flac, from 'test_stereo.flac': Metadata: MAJOR_BRAND : qt MINOR_VERSION : 512 COMPATIBLE_BRANDS: qt ENCODER : Lavf57.56.101 Duration: 00:02:57.56, start: 0.000000, bitrate: 1291 kb/s Stream #0:0: Audio: flac, 44100 Hz, stereo, s32 (24 bit) At least one output file must be specified
動画ファイルから音声を抽出とステレオ→モノラルに変更する
音声抽出に加えてモノラル音声に変更する例となります。
他にもビットレートやサンプリング周波数も変えることが出来ます。
このあたりは公式ドキュメント等々をご確認ください。
$ ffmpeg -i 動画ファイル -ac 1 変換後の音声ファイル
例
# 変換コマンド $ ffmpeg -i test.mov -ac 1 test_mono.flac # 音声の確認 $ sudo ffmpeg -i test_mono.flac ffmpeg version 3.2.12-1~deb9u1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --prefix=/usr --extra-version='1~deb9u1' --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-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --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-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libavresample 3. 1. 0 / 3. 1. 0 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Input #0, flac, from 'test_mono.flac': Metadata: MAJOR_BRAND : qt MINOR_VERSION : 512 COMPATIBLE_BRANDS: qt ENCODER : Lavf57.56.101 Duration: 00:02:57.56, start: 0.000000, bitrate: 693 kb/s Stream #0:0: Audio: flac, 44100 Hz, mono, s32 (24 bit) ←ここがモノラルになっています At least one output file must be specified