†ぽんこつビデオ工房†
作成開始日 2021.06.09
最終更新日 2022.07.29
ここで扱うff-mepg4/qscale=0変換(q0変換)は、タテマエ上は「無損失・可逆変換」と言うことになっている。しかし、実際に変換してみると、決して可逆変換ではないことが判る。ノイズの多い映像には補正を掛ける傾向があるようだ。本当に無損失・可逆変換であれば、ノイズも忠実に再現するはず。
#PY <- Needed to identify # #--automatically built-- adm = Avidemux() adm.loadVideo("D:/VRO/08.avi") adm.clearSegments() adm.addSegment(0, 4705000, 782482000) ← Aパートの開始点と長さ adm.addSegment(0, 877577000, 642609000) ← Bパートの開始点と長さ adm.addSegment(0, 1610309000, 14882000) ← クレジットの開始点と長さ adm.markerA = 0 ………
ただし、ここで一番問題になるのが、元ファイルのフォーマット。mepg(VRO/VOB)形式をそのまま食わすと、誤差が大きくて使い物にならない。素通しavi変換でも誤差は発生するし、音声に「ブツ」というノイズが入る現象も複数回経験した。mkvも誤差問題が発生した。結局、この段階でff-mpeg4/q0変換を使うのがベストと言うのが結論。
【追記】コマンドライン版avidemuxで変換を掛ける方法を見つけた
【注意】流石に今回の処理をバッチで済ますのは無理がある。予めPerlをインストールしておくこと(ちょっとハードル高いかな?)。
@VRO原盤をff-mpeg4で無劣化変換する(時間情報のトリム)
ffmpeg -i xxx.vro -vcodec mpeg4 -qscale 0 -acodec copy xxx.avi。
Aavidemuxでaviファイルを開いてフレーム単位で編集
B[file|project script|save as projectで]プロジェクト・ファイルを保存する
プロジェクト・ファイル名は元ファイル名に合わせる
元ファイルが「03.avi」であれば「03.py」とする(拡張子指定は省略可)
C複数のファイルがある場合も、同様に編集してプロジェクトを保存する
D下記の抜き出し生成スクリプト「pick.pl」を実行する
このスクリプトを実行すると「build.bat」というバッチファイルが作成される
Eカレントに
以上で「genban」ディレクトリ内にff-mpeg4/q0形式の原盤ファイルが出来上がる。「genban」を手作業で作成するのは少々手抜きだったかな。この辺りは、必要に応じてpick.plを書き換えて欲しい。
なお、ここで作成されるファイルは「ff-mpeg4コーデック/aviコンテナ」という、かなり変則的なもの。これをそのまま再生できるプレイヤーは少数派ではないかと思う。したがって、必要に応じてh.264なりxvidなりに変換して視聴すると良い。
もう一つの問題点は、q0変換後のサイズ。物にもよるのだが、TVアニメは元ファイルの0.7〜1.3倍くらいのサイズになる。元ファイルよりも小さくなる方が多いが、動きの激しい作品ではかなり膨らむ。作品によって無損失原盤と使い分けるとよい。
my @py=glob('*.py');
my $fname;
my $st;
my $p,$q,$r;
my $top,$bot;
my $fbat;
my $flst;
open my $fbat, '>', 'build.bat';
foreach(@py){
$st=$_;
print "$st \n";
$p=index($st,'.');
$fname=substr($st,0,$p);
open my $fp , '<', $fname.'.py';
open my $flst, '>', $fname.'.lst';
print $fbat "del _?.avi \n";
$n=0;
while ($st = readline $fp){
chomp $st;
if (index($st,'addSegment')>=0) {
$n=$n+1;
print "$n : $st \n";
$p=index($st,' ');
$q=rindex($st,' ');
$r=index($st,')');
$top=substr($st,$p+1,$q-$p-2)/1000000;
$bot=substr($st,$q+1,$r-$q)/1000000;
print $fbat "ffmpeg -ss $top -i $fname.avi -t $bot
-vcodec mpeg4 -qscale 0 _$n.avi\n";
print $flst "file _$n.avi\n"
}
};
print $fbat "ffmpeg -f concat -i $fname.lst -c copy ";
#print $fbat " -aspect 4:3 ";
#print $fbat " -aspect 16:9 ";
print $fbat "genban\\$fname.avi \n";
print $fbat "del _?.avi \n";
close $fp;
close $flist;
};
print $fbat "echo \n";
close $fbat;
【ぽんこつビデオ工房目次】
【ホーム】