Perl音频文件持续时间

时间:2015-05-13 18:43:43

标签: perl audio metadata

我正在写一个音频播放列表生成器。但是,我希望它不仅可以输出严格行中的名称和编号,还可以输出音频文件的持续时间。如果没有像这样的黑客攻击,我能做到这一点吗?

print "#: $number\tDuration: ";
system("mp3info -p \"%m:%s\" \"$track\"");
print "\tNAME: $name";

如果有任何重要内容,我的perl版本为v5.16.3

1 个答案:

答案 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');