« オライリーからのAjax本2冊購入 | メイン | LyricWikiのAPIを使って今聴いてる曲の歌詞を表示 »

FLVTool2::Command 0.01 FLVTool2のラッパーモジュール

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;

トラックバック

このエントリーのトラックバックURL:
http://yusukebe.com/mt/mt-tb.cgi/1978

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


ブログSEO対策:track word seo