恥は/dev/nullへ by 初心者

プログラミング素人がのろのろと学んだことをつづっています♪

ffmpegでmp4ファイルをmp3ファイルに変換

動画(mp4形式)から音だけを抽出したいと思いネット検索をしてみました。ffmpegというソフトを使えばmp4ファイルからmp3ファイルを作成できるようです。
なお、以下の作業はDebian 11(bullseye)で行いました。

ffmpegの使用例

変換前のmp4ファイルが「hoge.mp4」で、変換後のmp3ファイルが「hoge.mp3」であるとすると、コマンドラインは以下のようになります。

ffmpeg -i hoge.mp4 hoge.mp3

出来上がったmp3ファイルを調べたところ、ビットレートは128kb/sでした。

ビットレート256kb/sにするのであれば次のようにします。

ffmpeg -i hoge.mp4 -ab 256k hoge.mp3


変換用スクリプト

少し時間が経てばビットレートの指定の仕方も忘れてしまいますので、シェルスクリプトにしてみました(普段シェルスクリプトを書かないので、どこか間違っているかもしれませんが)。

#!/bin/bash

if [ $# -eq 0 ]; then
    echo "引数を指定してください"
    exit 1
elif [ $# -ne 1 ]; then
    echo "引数は1つだけしか指定できません"
    exit 1
fi

INPUT=$1

if [ "$INPUT" != *.mp4 ]; then
    echo "拡張子が.mp4ではない気が・・・?"
    exit 1
fi

OUTPUT=${INPUT/%.mp4/.mp3}

if ffmpeg -i "$INPUT" -ab 256k "$OUTPUT"; then
    echo
    echo "変換が終わったぞよ(MP4 → MP3)"
    exit 0
else
    STATUS=$?
    echo
    echo "なんか、変換できんかったわ"
    echo "exit status : $STATUS"
    exit $STATUS
fi

$1をそのまま使えば INPUT という変数を用意する必要はないのですが、私の好みでINPUTを用意しています。

スクリプトの使い方

上記シェルスクリプトを「mp4tomp3.sh」というファイル名で保存して実行権限を付与したとします。引数としてmp4ファイルを1つ指定します。

./mp4tomp3.sh hoge.mp4

これで「hoge.mp3」というファイルが出来上がります。