Top > 動画からサムネイル画像を生成する

キーワード: Linux mplayer mencoder 動画 サムネイル 自動 生成 作成


やりたいこと

  • 動画のサムネイルを作りたい
  • 自動化したい

必要なもの

  • 生成もとの動画ファイル filepenguin.avi
  • mplayer
    • # yum -y install mplayer --enablerepo=dag
  • ImageMagick(montage)
    • # yum -y install ImageMagick

単一ファイルを生成してみる

  • penguin.aviが元ファイル
  • 5秒目を1フレーム抜き出す
  • 320x240pxで書き出す
    $ mplayer -vo jpeg -vf scale=320:240 -ao null -ss 5 -frames 1 penguin.avi

実行すると 00000001.jpg が生成される.

00000001.jpg

全自動で動画を一定間隔でキャプチャー → サムネイル化

自動化スクリプト: /usr/local/bin/videothumb

#!/usr/bin/perl

## 設定項目 ##
$w          = 200;                  #サムネイル1枚当たりの横幅px
$interval   = 3;                    #動画を切り抜く間隔(秒)
$tmpdir     = "/dev/shm/thumbnail"; #作業用ディレクトリ.
                                    #頻繁なファイルIOがあるので/dev/shmを推奨

exit unless -d $tmpdir;
exit unless -w $tmpdir;

&detect_aspect;
&detect_length;

$s = 1;
while ($s < $length) {
    &mk_thumb ;
    $name = sprintf ("%06d", $s);
    rename ("$tmpdir/00000001.jpg", "$tmpdir/$name.jpg");
    $s += $interval;
}

$montage = "montage -tile 2x -geometry ".$w."x".$h."!".
           " \`ls $tmpdir/*.jpg\` $tmpdir/thumbnail.jpg";
`$montage`;
print `cat $tmpdir/thumbnail.jpg`;
`rm -f $tmpdir/*`;

sub mk_thumb {
    $cmd = "mplayer -vo jpeg:outdir=$tmpdir -vf scale=".$w.":".$h." ".
           " -ao null -ss $s -frames 1 \"@ARGV\"  > /dev/null 2>&1";
    `$cmd`;
}

sub detect_aspect {
    $cmd = "mplayer -vo null -ao null -frames 0 -identify \"@ARGV\" 2> /dev/null".
           " |egrep 'ID_VIDEO_(WIDTH|HEIGHT)' |cut -d '=' -f 2";
    $res = `$cmd`;
    ($sw,$sh) = split (/\n/, $res);
    $h = int($sh*$w/$sw) +0;
}

sub detect_length {
    $cmd = "mplayer -vo null -ao null -frames 0 -identify \"@ARGV\" 2> /dev/null".
           " |grep ^ID_LENGTH |cut -d '=' -f2";
    $length = `$cmd`;
    chop ($length);
}
  • 動作
    • アスペクト比を自動取得し、サムネイルの縦横比も維持
    • $interval秒毎に動画を切り出し、JPEGファイル化
    • 切り出したJPEGファイルを結合
    • 標準出力に結合したJPEGを吐き出す
$ viddeothimb penguin.avi > thumbnail.jpg

実行結果↓
thumbnail.jpg



コメント

コメントはありません。 コメント/動画からサムネイル画像を生成する?

お名前: URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White


添付ファイル: filethumbnail.jpg 876件 [詳細] file00000001.jpg 496件 [詳細]

新規 編集 添付 名前変更 バックアップ   ホーム バックアップ リンク元   最終更新のRSS