Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

flvファイルをmp3ファイルに変換するスクリプト

1.Linuxでflvファイルから音声だけを抽出してmp3ファイルに変換したい

flvファイルから音声だけを取り出してmp3ファイルに出来ないものか・・・・
ちょっと調べたらffmpegなるコマンドを発見。
普段Ubuntu8.10を利用しているのですが、標準でインストールされている模様。

2.スクリプトの実行方法(仕様)を検討

作ったシェルスクリプトに渡す引数として、フルパスのflvファイルを指定するように考える。
ワイルドカードでのファイル指定かなぁ・・・
イメージとしてはこんな感じを想定。
flvファイルのファイル名で拡張子をmp3として作成する。
元のflvファイルは残したままとする。

KAMUYCIKAP % flv2mp3 ./hogehoge/henkan.flv
KAMUYCIKAP % flv2mp3 ./hogehoge/*.flv

3.ソースコード

#!/bin/zsh
#=============================================================================
#指定されたディレクトリにあるflvファイルを読み込み、mp3に変換する
#-----------------------------------------------------------------------------
#引数
#   flvファイル(フルパス)
#=============================================================================

#変数定義
cnt=1               #flvファイルカウント(変換用)

cntmax=$#           #引数で渡されたflvファイルの最大カウント
cntmax=$[cntmax+1]  #0番目にはコマンド名が入っているため調整

#コマンド名のみで起動された(flvファイルパス無し)場合、エラーとする
if [ $# -lt 1 ]
then
    echo "SYNOPSIS : flv2mp3 [FILE PATH(flv)]..."
    echo "sample   : % flv2mp3 ./*.flv"
    exit 1
fi

#引数で渡されたflvファイル数だけループする
#$argvの0番目にはコマンド名が入っているためcntは1からカウントする
while [ $cnt -lt $cntmax ]
do
    inputfile=`echo $argv[$cnt] | sed -e "s/\.flv//g"`     #拡張子(.flv)を削除してinputfileへセット
    echo $inputfile
    `ffmpeg -i "$argv[$cnt]" -acodec copy $inputfile.mp3`   #flvからmp3へ変換
    cnt=$[cnt + 1]
done

exit 0