エンコめも
~見習いエンコ師のメモ帳~
http://encmemo.blog.fc2.com/

 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 
DeDupのメモ。
フレーム数を減らすことでファイルサイズの削減が期待出来ます。
 

more


低ビットレートという縛りでエンコをしていると、とにかくムダを省くことが重要になってきます。
そして重複フレームを削るとか考えちゃったりするわけです。
実際に試したのは1年前なのですが、忘れないうちにメモということで記事にしてみます。


実用的なものかどうかは微妙なところ・・・

1年前の結果は、(ビットレート指定、約1000kbps)

・ブラックロックシューター第07話
総フレーム数、通常34,051フレームのところ26,053フレームに
平均フレームレートは約18fps
・偽物語第11話
総フレーム数、通常35,228フレームのところ16,516フレームに
平均フレームレートは約11fps

両方共DeDupのしきい値はデフォルトです。

酷い誤爆はないですが、目に見えて画質が向上するということもなかったです。
また、グレインを潰さなければ間引けないのでグレイン保持エンコには向かないですね。

SSIM,QPはあまり変わらず。
余程の紙芝居アニメでないと良い結果は期待できないんだぜ・・・

ブラックロックシューター第07話

x264 [info]: frame I:280 Avg QP:18.63 size: 44483
x264 [info]: frame P:9056 Avg QP:22.33 size: 12958
x264 [info]: frame B:24715 Avg QP:25.19 size: 2288
x264 [info]: SSIM Mean Y:0.9840463 (17.971db)

x264 [info]: frame I:249 Avg QP:18.65 size: 46106
x264 [info]: frame P:7420 Avg QP:22.58 size: 15669
x264 [info]: frame B:18384 Avg QP:25.28 size: 3191
x264 [info]: SSIM Mean Y:0.9844790 (18.091db)


やり方めも

この方法ではavsファイルを2つ用意します。

1つ目は解析用
ここでは"偽物語11話a.avs"とする

AssumeTFF()
FrameCache(9).Auto24FPS(true, 24, 16, "", false)
BilinearResize(960,540)
Blur(1.0)
DupMC(log="偽物語11話.avs.dup.txt")
return last

ぼかしやNRでノイズを飛ばしざわつきを抑え、DupMCで解析ログを出力します。
大きめにリサイズした方が誤爆は減る予感。
※逆テレシネは必須ではない。

2つ目は本エンコ用
ここでは"偽物語11話.avs"とする

AssumeTFF()
FrameCache(9).Auto24FPS(true, 24, 16, "", false)
DeDup(threshold=0.3,threshold2=0.5,maxcopies=20,maxdrops=20,log="偽物語11話.avs.dup.txt",times="偽物語11話.avs.tmc")
Spline64Resize(1280,720)
FFT3DGPU(sigma=4.0,beta=4,plane=0,bw=16,bh=16,ow=8,oh=8,bt=3,sharpen=1.0,mode=1)
return last

通常エンコ時のavsにDeDupを加えただけです。
解析ログを読み込み、timecodeを出力します。


続いてbatファイルの記述。

@echo off

set avs2wav_path="D:\AviSynth 2.5\bin\avs2wav.exe"
set x264_path="D:\AviSynth 2.5\bin\x264r2184kMod.exe"
set neroaacenc_path="D:\AviSynth 2.5\bin\neroAacEnc.exe"
set mp4box_path="D:\AviSynth 2.5\bin\MP4Box.exe"
set avs2yuv_path="D:\AviSynth 2.5\bin\avs2yuv.exe"
set BITRATE=--bitrate 1008

SET QP=--qpmin 8 --qpmax 46 --qpstep 16 --qcomp 0.8
SET AQ=--aq-mode 2 --aq-strength 1.0 --psy-rd 0.6:0 --no-mbtree
SET FRAME=--8x8dct --partitions p8x8,b8x8,i8x8,i4x4 --scenecut 40 --keyint 300 --min-keyint 4 --bframes 6 --b-adapt 2
SET MEH=--me umh --subme 9 --merange 32 --direct auto --ref 6 --trellis 2
SET ETC=--no-dct-decimate --ssim --tcfile-in "偽物語11話.avs.tmc" --timebase 1001/120000
SET DEF=--no-dct-decimate --ssim
SET TURBO1=--no-8x8dct --me dia --partitions none --ref 1 --subme 2 --trellis 0 --fast-pskip
SET TURBO2=--scenecut 40 --keyint 300 --min-keyint 4 --bframes 6 --b-adapt 2 --merange 32 --direct auto
SET TURBO3=--no-8x8dct --me dia --partitions none --ref 1 --subme 2 --trellis 0 --fast-pskip
SET TURBO4=--scenecut 40 --keyint 300 --min-keyint 4 --bframes 3 --b-adapt 2 --merange 24 --direct auto
SET TURBO5=--aq-mode 1 --aq-strength 0.6 --psy-rd 0.6:0 --no-mbtree --no-chroma-me

set paradef=%QP% %TURBO5% %TURBO3% %TURBO4% %DEF%
set para1p=%QP% %AQ% %TURBO1% %TURBO2% %ETC%
set para2p=%QP% %AQ% %FRAME% %MEH% %ETC%

echo %time% >"偽物語11話.avs.log"

%avs2wav_path% "偽物語11話.avs" "偽物語11話.avs.wav"

%neroaacenc_path% -br 128000 -lc -if "偽物語11話.avs.wav" -of "偽物語11話.avs.m4a"

echo 解析開始…%time% >>"偽物語11話.avs.log"
%avs2yuv_path% 偽物語11話a.avs -o - | %x264_path% %BITRATE% --pass 1 %paradef% --output NUL - --demuxer y4m %~1 2>>"偽物語11話.avs.log"
rem #pause
echo 1pass開始…%time% >>"偽物語11話.avs.log"
%avs2yuv_path% 偽物語11話.avs -o - | %x264_path% %BITRATE% --pass 1 %para1p% --output NUL - --demuxer y4m %~1 2>>"偽物語11話.avs.log"
echo 2pass開始…%time% >>"偽物語11話.avs.log"
%avs2yuv_path% 偽物語11話.avs -o - | %x264_path% %BITRATE% --pass 2 %para2p% - --demuxer y4m --output "偽物語11話.avs.temp.mp4" %~1 2>>"偽物語11話.avs.log"

echo エンコード終了…%time% >>"偽物語11話.avs.log"

%mp4box_path% -add "偽物語11話.avs.temp.mp4"#video -add "偽物語11話.avs.m4a"#audio -new "偽物語11話.avs.mp4"

pause


一部書き換えたのでエラー出るかも・・・


60iテロがある場合、

解析用avs

AssumeTFF()
FrameCache(9).Auto24FPS(true, 24, 16, "", false)

Its(def="E:\TS\avisynth\偽物語11話.def",fps=-1,output="E:\TS\avisynth\偽物語11話.avs.its.tmc",debug=false)

本エンコ用avs

AssumeTFF()
FrameCache(9).Auto24FPS(true, 24, 16, "", false)

Its(def="E:\TS\avisynth\偽物語11話.def",fps=-1,output="E:\TS\avisynth\偽物語11話.avs.its2.tmc",debug=false)

DeDup(threshold=0.3,threshold2=0.5,maxcopies=20,maxdrops=20,log="偽物語11話.avs.dup.txt",times="偽物語11話.avs.tmc")

DeDup(threshold=0.3,threshold2=0.5,maxcopies=20,maxdrops=20,log="偽物語11話.avs.dup.txt",times="偽物語11話.avs.tmc",timesin="偽物語11話.avs.its.tmc")

とすれば良いはず。




書いといて何だけど、これは邪道だよね・・・
メリットデメリット考えたら今後使うことはないかなぁ

※フレーム数を10%削ると約0.035%前後のサイズ削減になるらしいです(´・ω・`)


スポンサーサイト
 

Comment


非公開コメント

zantei。

Author:zantei。
エンコ歴2年くらい。
エンコ勉強中。

使用ソフト
Avisynth v2.6 SEt 32bit
x264 64bit
aviutl v99j2

PCスペック
win7 64bit
Core i7 2600 3.4GHz
GeForce GTX550 Ti 1GB
メモリ 4GB

このブログの記事はエンコ初心者による
ただのメモ書きです。
全く参考にならないのでご注意ください。
※特に2012年の記事

@twitter

未分類 (3)
雑記 (6)
aviutl (0)
avisynth (12)
エンコメモ (1)
エンコめも (8)
プログラミング (0)

このブログをリンクに追加する

この人とブロともになる

 
*Template By-MoMo.ka* Copyright © 2017 エンコめも, all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。