MovableTypeの管理画面の「ファイルのアップロード」ってやつから映像ファイルをアップロードすると.flvファイルに変換してくれるってやつ。ほんとはMTをYoutubeみたいにしたいので、エントリー毎に1ファイルということでオリジナルのフィールド作ってcallbackのタイミングをエントリーをポストした時とした方がよいかも。RightFieldsと組み合わせるかな。
package MT::Plugin::Video;
use strict;
use MT;
use MT::Log;
use FFmpeg::Command;
my $ffmpeg = FFmpeg::Command->new('/usr/local/bin/ffmpeg');
my $log = MT::Log->new;
my $plugin = new MT::Plugin({
name => "Video",
version => '0.01',
author_name => "Yusuke Wada",
author_link => "http://yusukebe.com",
});
MT->add_plugin($plugin);
MT->add_callback('CMSUploadFile', 1, undef, \&uploadfile_hdlr);
sub uploadfile_hdlr {
my ($eh, %params) = @_;
my $file = $params{File};
encode($file);
}
sub encode{
my ($input) = @_;
$ffmpeg->input_file($input);
my $output = get_base_name($input) . ".flv";
$ffmpeg->output_file($output);
$ffmpeg->options(
'-y',
'-f' => 'flv',
'-s' => '470x390',
'-ar' => '44100',
'-deinterlace',
);
my $result = $ffmpeg->exec();
}
sub get_base_name {
my ($file_name) = @_;
my $basename = $file_name;
$basename =~ s/(.*)\..*?$/$1/;
if ($basename eq '') {
$basename = $file_name;
}
return $basename;
}

