【FFmpeg】MP4ファイルから音声(WAVファイル)を取り出す

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【FFmpeg】MP4ファイルから音声(WAVファイル)を取り出す

2022-3-22 | ,

FFmpegを使ってMP4ファイルから音声(WAVファイル)を取り出したい!

概要

FFmpegを使ってMP4ファイルから音声(WAVファイル)を出力する例を示す。

仕様書

batファイルに変換したいMP4、または、MP4が保管されたディレクトリをドラッグ・アンド・ドロップするとMP4ファイルから音声(WAVファイル)を出力される。

出力するWAVファイルはチャンネル数2、PCM24bit。

環境

  • Windows 10 Home Version 21H1(OS ビルド 19043.1415)
  • FFmpeg 4.2

手順書

下記は、引数で渡されたファイルをMP4ファイルから音声(WAVファイル)を出力するサンプルです。

@echo off

:loop

if "%~1" == "" goto end

set attr=%~a1

if exist %~1 (
    if %attr:~0,1%==d (
        for /r %~1 %%f in (*.mp4) do (
            call:mp4tomp4towav "%%f"
        )
    ) else if %attr:~0,1%==- call:mp4towav "%~1"
)

shift
goto loop

:end

pause

exit /b

:mp4towav

ffmpeg -y -i %1 -map 0:1 -vn -ac 2 -acodec pcm_s24le -f wav%~n1.wav

exit /b

上記のBatchファイルを実行する前にffmpeg.exeがあるディレクトリにパスを通しておく。もしくは、Batchファイル内のffmpegコマンドをフルパスで入力しておく。

作ったbatファイルに変換したいMP4ファイルをまとめてドラッグ・アンド・ドロップすると処理が逐一開始される。

解説

ffmpegコマンドのオプションについて簡単に解説する。

-map 0:1は出力するwavファイルの入力ファイルのストリームの番号を設定する。一般的なMP4は1つの映像と1つの映像を含んでいるのでだいたいの場合は-map 0:1で良い。複数の音声のストリームを含むMP4の場合は、wavファイルにしたいストリームの番号を設定する。

-vnは出力するファイルに映像を含めなくする。

-ac 2は出力するwavファイルのチャンネル数を設定する。

-acodec pcm_s24leは出力するwavファイルのコーデックを設定する。pcm_s24leはPCM24bit、pcm_s16leを設定するとPCM16bitになる。

まとめ(感想文)

撮影した動画の音声だけを使いたいとか、音声だけ別のアプリケーションで編集したい時に便利かもね!