« FFmpeg::Commandを使ってflvを作成する | メイン | RightFieldsのプロパティをゲットする »

MTでファイルを映像アップロードしたらflvに変換する

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;
}

トラックバック

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

コメントを投稿

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


ブログSEO対策:track word seo