我正在写一个音频播放列表生成器。但是,我希望它不仅可以输出严格行中的名称和编号,还可以输出音频文件的持续时间。如果没有像这样的黑客攻击,我能做到这一点吗?
print "#: $number\tDuration: ";
system("mp3info -p \"%m:%s\" \"$track\"");
print "\tNAME: $name";
如果有任何重要内容,我的perl版本为v5.16.3
。
答案 0 :(得分:1)
理想情况下,您希望根据文件内容而不是扩展名来确定文件类型,File::Type
可以派上用场。 MP3 :: Info and Audio :: Flac :: Header是写得很好的perl模块。
use File::Type;
use MP3::Info;
use Audio::FLAC::Header;
my $duration = -1;
my $ft = File::Type->new()->checktype_filename($track);
$duration = Audio::FLAC::Header
->new($track)
->tags()
->{trackTotalLengthSeconds}
if($ft eq 'audio/flac');
$duration = MP3::Info
->get_mp3info($track)
->{SECS}
if($ft eq 'audio/mpeg3');