mp4ファイルから無音部分を除去する。Ubuntu18.04
概要
900ファイルほどまとめて無音部分を除去したかったので調査。
mp4の状態のまま無音部分の除去をしたかったけど見当たらず、
音声部分だけ倍速再生してオーディオブック的な使い方ができればということで実行
詳細
- mp3のままだと変更できないので、wavに一旦変換する。
- オーディオファイル
- 最初の無音部分をカット
- 最後の無音部分をカット
- ついでに、ファイルの間の一定時間無音のものもカット -WAVはMP4の10倍ほどのサイズになったのでフォルダを分割してシェルでまとめて実行
環境
事前準備
Soxは 以下でインストール
UbuntuでOpenMeetingsとかで、SoXのインストールなどを | UbuntuやWordPress等を使ってみるテスト
手順
フォルダ配下のmp4ファイルをwavに変換
find . -name '*.mp4' -exec ffmpeg -i '{}' -vn '{}'.wav ';'
無音部分はSoxで削除する
find . -name '*.wav' -exec sox '{}' '{}'_remove_silence.wav silence 1 0.1 1% -1 0:20 0.1% ';'
wavをmp3に変更する
find . -name '*_remove_silence.wav' -exec ffmpeg -i '{}' '{}'.mp3 ';'
参考は以下の通り
http://programming.ironsand.net/2014/how-to-extract-audios-without-silence-with-ffmpeg-and-sox/
勘所
durationは秒数指定したいなら小数点・MM:SS・SSt(e.g. 100.0 , 1:40, 100t)を使い、サンプル数の時は整数指定をするようだ。