DA_SCRIPT
音楽ファイル一括変換
Perlです。フォルダにまとめた複数の無圧縮音源を、MP3 か Flac に一括変換します。Linuxには標準でこんなアプリがあったと思うんですが、最近見当たらないのでつ作ってみました。
端末からコマンドラインで "Perl convert.pl -flac" などとして使います。
Convert.pl
#!/usr/bin/perl $dir = "./"; #オプションで指定がなければスクリプトと同じ場所を変換 $outdir = "./"; #オプションで指定がなければ変換前ファイルと同じ場所に変換保存 $outcom = 0; #オプションで指定がなければMP3に変換 $bl = "256k"; #オプションで指定がなければビットレートは256k @type = (".wav",".wave",".aif",".aiff"); #オプションで指定がなければWAVEとAIFFを両方変換 $udir = "0"; $fi = 0; if ($ARGV[0]){ foreach $_ (@ARGV){ if($_ =~ /\-dir\=/i){ $_ =~ s/\-dir\=//; $dir = $_; if($outdir == "./"){$outdir = $_;$outdir =~ s/\/$//i;} $udir = 8; } if($_ =~ /\-outdir\=/i){ $_ =~ s/\-outdir\=//; $outdir = $_;$outdir =~ s/\/$//i; } if($_ =~ /\-flac/i){$outcom = 8;} if($_ =~ /\-aif/i){@type = (".aif",".aiff");} if($_ =~ /\-wav/i){@type = (".wav",".wave");} if($_ =~ /\-sl\=/i){ $_ =~ s/\-sl\=//; $bl = $_; } } } else{ print "オプションがない場合は、同じフォルダ内で変換保存しています。\n"; } &getlist($dir); print "\n********************************************\n"; print "このスクリプト.plはffmpegでCDからのWAVEとAIFFを\n"; print "MP3(FLAC)に一括変換します。\n"; print "ex: perl 付けた名前.pl -dir=一括変換したい場所のURL -outdir=保存先のURL\n"; print "------------------------------------------------\n"; print "<オプション的な>\n"; print "-dir=変換するサウンドファイルのある場所(省略でスクリプトと同じフォルダー)\n"; print "-outdir=変換したファイルの保存場所(省略で変換するファイルと同じ場所)\n"; print "-bl=128k(MP3の場合のビットレート、省略で256k)\n"; print "-flac. Flacに変換、なければMP3に変換\n"; print "(64k 128k 192k 320k など)\n"; print "-wav (WAVEのみ変換)\n"; print "-aif (AIFFのみ変換)\n"; print "------------------------------------------------\n"; foreach (@files){ $outfile = $_; $lists = " \"$_\""; $lists =~ s/\._//ig; $outfile =~ s/.+\///ig; $outfile =~ s/\..+//ig; if($outcom == 8){$outfile = $outdir . "/" . $outfile . ".flac";} else{$outfile = $outdir . "/" . $outfile . ".mp3";} if($outfile =~ /\/\./){next;} $fi ++; $outfile = " \"$outfile\""; if($lists){ if($outcom == 8){#print "$lists -- $outfile\n"; #動作確認用 system("ffmpeg -i $lists -vn -ar 44100 -ac 2 -acodec flac -f flac $outfile"); } else{#print "$lists -- $outfile\n"; #動作確認用 system("ffmpeg -i $lists -vn -ac 2 -ar 44100 -ab $bl -acodec libmp3lame -f mp3 $outfile"); } } else{print "--NoFile--\n";} } print "Change $fi ファイル\n"; exit; #----------------------------------------------------------------------- sub getlist{ my $ndir = $_[0]; my @get; opendir(IN,$ndir) or return; @get = readdir IN; closedir(IN); foreach $files (@get){ next if $files =~ /^\.\.$/; next if $files =~ /^\.$/; foreach (@type) { if($files =~ /$_$/i){ if($ndir =~ /^\.\/.+/i){push @files, "$ndir" . "/$files";} elsif($udir){$ndir =~ s/\/$//i; push @files, "$ndir" . "/$files";} else{push @files, "$files";} } } if($ndir =~ /^\.\/.+/i){$nndir = $ndir . "/$files";} elsif($udir){$ndir =~ s/\/$//i; $nndir = "$ndir" . "/$files";} else{$nndir = $ndir . "$files";} if(-d $nndir){&getlist($nndir);} } }
上記をコピーする
リストに戻る
NON6MUSEUM
NON6MUSEUM ANEX