FLVTool2というflvファイルにメタデータつけたり、メタデータを取得できるソフトのPerlラッパーモジュール。初めてモジュール作ったかも(といってもFFmpeg::Commandをかなり参考にさせていただきました)。
こんな感じで、flvファイルにメタデータつけれるのとdurationを秒数でゲットできます。
#!/usr/bin/perl
use FLVTool2::Command;
my $flvtool = FLVTool2::Command->new('/usr/bin/flvtool2');
$flvtool->file('test.flv');
$flvtool->add_metadata;
my duration = $flvtool->get_duration;
以下、FLVTool2::Command。
package FLVTool2::Command;
use warnings;
use strict;
our $VERSION = '0.01';
use base qw( Class::Accessor::Fast Class::ErrorHandler );
__PACKAGE__->mk_accessors( qw( file flvtool2) );
use IPC::Run qw( start );
use Carp qw( carp );
sub new{
my $class = shift;
my $self = {
flvtool2 => shift || 'flvtool2',
file => '',
};
bless $self, $class;
}
sub get_duration {
my $self = shift;
my @result = split(/\n/,$self->execute('-P'));
my $duration;
foreach (@result){
if(/duration: (\d+)/){$duration = $1};
}
return $duration;
}
sub add_metadata {
my $self = shift;
$self->execute('-UP');
return;
}
sub execute {
my ( $self, $args) = @_;
my ( $in, $out, $err );
my $h = eval {
start [ $self->flvtool2, $args, $self->file], \$in, \$out, \$err;
};
if( $@ ){
$self->error($@);
return;
}
else {
finish $h or do {
$self->error($err);
return;
};
}
return $out;
}
1;

