ffmpegの画像重視エンコードラッパー
ffmpegを利用した、PS3でも再生可能なH.264/AACのエンコードオプション付きラッパーです。
変換したいファイルを引数で渡すと、mp4ファイルが作成されます。最初に動画の画素数を取得して、bitレートを変更します。
変換したいファイルを引数で渡すと、mp4ファイルが作成されます。最初に動画の画素数を取得して、bitレートを変更します。
#!/usr/bin/perl
use File::Basename;
foreach (@ARGV) {
print "-------------------------------------------------------------------------------------\n";
# 引数取得
$srcfile = $_;
# 出力ファイル名生成
$regex_suffix = qw/\.[^\.]+$/;
($name, $path, $suffix) = fileparse($srcfile, $regex_suffix);
$tgtfile = $name . ".mp4";
printf("srcfile=$srcfile\n");
printf("tgtfile=$tgtfile\n");
# オプション設定
@tmp = `ffmpeg -i "$srcfile" 2>&1`;
$srcsize = "";
foreach (@tmp) {
chomp;
# print "$_\n";
if (/Stream.*Video.* (\d+x\d+)/) { $srcsize = $1; }
}
@tmp = split(/x/, $srcsize);
$bitrate = ((int $tmp[0])*(int $tmp[1])/200);
printf("srcsize=$srcsize\n");
printf("bitrate=$bitrate\n");
if ($srcsize eq "") { exit; }
# プログラム実行
# 低圧縮
# $option = "-y
# -threads 2
# -vcodec libx264
# -f mp4
# -r 29.97
# -qmax 22
# -qdiff 2
# -qcomp 0.2
# -deinterlace
# -level 42
# -s ${srcsize}
# -b ${bitrate}k
# -bt ${bitrate}k
# -acodec libfaac
# -ac 2
# -ar 48000
# -ab 128k";
# 高圧縮
$option = "-y
-threads 2
-vcodec libx264
-f mp4
-flags loop+bitexact
-flags2 mixed_refs
-trellis 2
-g 300
-keyint_min 25
-sc_threshold 40
-subq 7
-partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8
-me_method esa
-me_range 21
-cmp chroma
-refs 6
-deblockbeta 0
-deblockalpha 0
-bufsize 10000k
-maxrate 10000k
-qcomp 0.6
-qmin 21
-qmax 51
-qdiff 4
-deinterlace
-level 42
-coder 1
-r 30000/1001
-s ${srcsize}
-b ${bitrate}k
-bt ${bitrate}k
-acodec libfaac
-ac 2
-ar 48000
-ab 128k";
$option =~ s/\n/ /g;
$option =~ s/ +/ /g;
if ($srcfile ne $tgtfile) {
print "ffmpeg -i \"$srcfile\" $option \"$tgtfile\"\n";
system "ffmpeg -i \"$srcfile\" $option \"$tgtfile\"";
}
}
コメント
コメントの投稿

