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