定番MP3エンコーダのLAMEでWAVフォーマットからMP3へ圧縮する際に、ファイルを1つずつしか処理できなかったので、スクリプトを作って複数ファイルを処理していく。
LAMEインストール環境設定
とりあえずパッケージの更新後、インストール
アップデート:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install lame
lame --version
コマンドライン上で音を再生する設定
wavフォーマットや、圧縮変換後のmp3フォーマットのファイルをコマンドライン上で再生して確認できるようにする。
アップデート:
sudo apt-get update
sudo apt-get upgrade
wavファイル
waveファイルを再生するために、”aplay”を使う。
以下のインストール
sudo apt install alsa-base
sudo apt-get install alsa-utils
ここまでで、aplayで再生できるはずだが、WSLでは以下のようなエラーが出た。
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5701:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2664:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:831: audio open error: No such file or directory
なので
PulseAudioの明示的インストール
sudo apt-get install pulseaudio
aplayのインストール確認
aplay --version
aplay {file_path}
mp3ファイル
mp3フォーマットのファイルを再生するために"mpg321"を使う。名前の通りMpeg規格のMP3を再生できるプレーヤー
インストール:
sudo apt-get install mpg321
mpg321 --version
mpg321 {file_path}
エンコード/デコード方法
細かなオプションについては以下など参考:
ファイル単体処理
基本記述:
lame {オプション} {入力ファイル} {出力ファイル}
エンコード例:
lame -b 320 music.wav music.mp3
デコード例:
lame --decode music.mp3 music.wav
複数ファイルの処理
スクリプトで複数回コマンドを実行する
ツリー構造:
lame_test_dir
├── script.sh
└── wave
└── toujyo.wav
Shellスクリプト:
#!/bin/sh
cd "$(dirname "$0")"
for BPS in 128 192 256 320; do
if [ ! -d ./mp3_"${BPS}" ]; then
# ディレクトリが存在しない場合
mkdir ./mp3_"${BPS}"
else
# ディレクトリが存在する場合
if [ -n "$(ls -A ./mp3_"${BPS}")" ]; then
echo ""
fi
fi
# エンコード
find ./wave/ -name *.wav | sed 's/.\/wave\///' | sed 's/.wav//' | while read file; do
lame -b "${BPS}" ./wave/"$file".wav ./mp3_"${BPS}"/"$file".mp3
done
done
実行後ツリー:
lame_test_dir
├── mp3_128
│ └── toujyo.mp3
├── mp3_192
│ └── toujyo.mp3
├── mp3_256
│ └── toujyo.mp3
├── mp3_320
│ └── toujyo.mp3
├── script.sh
└── wave
└── toujyo.wav
参考:
https://zenn.dev/cat2151/scraps/53076d45431d49
https://weblinuxmemo.hatenadiary.org/entry/20090914/p2