Perl 音频文件持续时间
Perl Audio file duration
我正在编写一个音频播放列表生成器。但是,我希望它不仅在严格的行中输出名称和编号,而且还音频文件的持续时间。如果没有像这样的黑客,我有什么办法可以做到这一点:
print "#: $number\tDuration: ";
system("mp3info -p \"%m:%s\" \"$track\"");
print "\tNAME: $name";
如果有什么重要的话,我的perl版本是v5.16.3
。
理想情况下,您希望根据文件内容而不是扩展名来确定文件类型,File::Type
可以派上用场。 MP3::Info 和 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');
我正在编写一个音频播放列表生成器。但是,我希望它不仅在严格的行中输出名称和编号,而且还音频文件的持续时间。如果没有像这样的黑客,我有什么办法可以做到这一点:
print "#: $number\tDuration: ";
system("mp3info -p \"%m:%s\" \"$track\"");
print "\tNAME: $name";
如果有什么重要的话,我的perl版本是v5.16.3
。
理想情况下,您希望根据文件内容而不是扩展名来确定文件类型,File::Type
可以派上用场。 MP3::Info 和 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');