Методика подбора битрейта под ваш исходник для получения оптимального по качеству рипа XviD-ASP.

Topic locked
 
Author Message

Серый1779 ®

Gender: Male

Longevity: 1 year

Posts: 733

Location: Украина

Post 02-Mar-2019 22:58

[Quote]

Методика подбора битрейта под ваш исходник для получения оптимального по качеству рипа XviD-ASP.- 
Основной постулат при кодировании XviD: фреймы с квантом "2" не будут выглядеть хуже, чем с "1", поскольку алгоритм управления скоростью кодека не всегда справляется с минимальными квантами "1" хорошо и можно получить негабаритный файл на выходе, кроме того с минимальным квантом "1" кодек делает распределение квантов хуже.
Второй постулат: изображение с квантами 3 по фреймам смотрится тоже хорошо.
Третий постулат: все фреймы с квантизером выше 4 смотрятся плохо из-за высокой степени сжатия.
Четвертый постулат: степень сжатия и соотвественно качества сильно зависит от количества идущих подряд b-frames. Однако следует иметь в виду, что стационарные DVD плееры в состоянии поддерживать только -max_bframes 2.
Пятый постулат: качество B-frames регулируется параметрами -bquant_ratio и -bquant_offset.
B-frames ratio — Множитель (в среднем) окружающих квантов НЕ B-кадров, с этим значением, даст вам квантизер B-кадра (высчитывается, согласно формуле, на сколько должен быть поднят квантизер для B-кадров). Так что, если два смежных кадра имеют кванты 2 и 4, средний квант будет 3. Множитель с соотношением кванта 150 даст вам B-кадр с квантом — 4,5.
Пример: (2 + 4) * 150 / 200 = 4,5 (при условии что B-frames offset=0)
(Квантизер предшествующего НЕ B-кадра + Квантизер следующего НЕ B-кадра) * (B-frames ratio) / 200 (при условии что B-frames offset=0)
Снижать этот параметр не рекомендуется (теряется смысл B-кадров). Повышать Вы можете на своё усмотрение, это повысит сжатие B-кадров (соответственно, снизит их качество) и повысит качество I и P-кадров.
B-frames offset — Смещение квантизера. Возьмите результат расчета выше, а затем добавьте это значение. Со смещением квантизера 200 вы в конечном итоге получите B-кадры с квантом 6,5.
Как правило, повышение последних двух значений, даст Вам B-кадры более низкого качества.
Так вот суть данной методики сводится, как раз к подбору битрейта для вашего исходного видео при двухпроходном кодировании в заданный битрейт, чтобы обеспечить оптимальное качество вашего рипа и не допустить слепое раздувания размера выходного файла. Вам надо подобрать именно битрейт к вашему рипу. а не подгонять его к заданному размеру, тем более, что актуальность записи рипа на оптические носители информации с каждым днём снижается.
1) создаём тестовый пресет кодирования в папке C:\Program Files\XviD4PSP 5\presets\encoding\AVI Hardware\video под именем XviD 2P TEST , в котором специально задаём максимально возможный битрейт 2000 кбит\ с (в конце текста станет ясно для чего) с довольно упрощёнными настройками для увеличения скорости тестирования:
video codec:
XviD
video cli:
-nopacked -bquant_ratio 162 -bquant_offset 0 -max_bframes 1 -qtype 0 -quality 5 -vhqmode 1 -max_key_interval 250 -nochromame -notrellis -turbo
-nopacked -bquant_ratio 162 -bquant_offset 0 -max_bframes 1 -qtype 0 -quality 6 -vhqmode 4 -max_key_interval 250 -bitrate 2000 -imin 1 -pmin 1 -bmin 1
2) Уставливаем в проге XviD 4PSP :
Формат: Avi HardWare
Фильтрация : Disabled (первоначально, но лучше сразу с выбранным вами фильтром обработки для более точного прогнозируемого результата)
Цветокоррекция : Disabled (первоначально)
Кодирование видео: XviD 2P TEST
Кодирование звука : Disabled (первоначально)
3) Делаем распределённую выборку кадров из исходника
Достаточно добавить в начало скрипта прямо после деинтерлейса , если он необходим, три строки и на выходе получим ряд продолжительностью около ~2550 фреймов, составленный из равномерно выдернутых из видеоряда кусков по 50 фреймов. Обычно этого достаточно, чтобы оценить сжимаемость более-менее равномерного видео длительностью до 1.5-2 часов.
selectTotal1=framecount()/100
selectTotal2=selectTotal1*2
selectrangeevery(selectTotal2,50)
Можно отказаться от выборки и выполнить кодирование определенного участка в 2000 фреймов с помощью функции trim(x,y), где x-первый кадр тестируемого участка, у=x+1999 -последний кадр участка.
4) Запускаем кодирование, не обращая внимания на показания на время кодирования, поскольку оно не отражает действительность и ждём окончания и смотрим лог кодирования.
При выборе битрейта при кодировании кодеком XviD будем полагаться на чтение лога кодирования второго прохода и смотреть на показатели квантов по I - , P - и B - frames: минимальное значение кванта \ среднее значение кванта \ максимальное значение кванта. В идеале после окончательного подбора битрейта мы должны получить такие данные по распределению квантов:
XVID4PSP
------------------------------
Version: 5.10.205.0
Created: 20.12.2010 15:45:38
TempPath: C:\Temp
AppPath: C:\Program Files\XviD4PSP 5
FILES
------------------------------
test.demuxed.m2v >
test.demuxed.avi
TASK
------------------------------
Format: AVI Hardware
Duration: 00:00:35:994 (863)
VideoDecoder: MPEG2Source
Resolution: 720x480 > 640x360
Aspect: 1.7778
VCodecPreset: Custom XviD CLI
VEncodingMode: TwoPass
VideoCodec: MPEG2 > XviD
VideoBitrate: 6066 > 1400
Quality: 0.586 > 0.253
Framerate: 29.970 > 23.976
FramerateModifer: ChangeFPS
SourceType: FILM
FieldOrder: TFF
Deinterlacer: TIVTC
SCRIPT
------------------------------
import("C:\Program Files\XviD4PSP 5\dlls\AviSynth\functions\AudioFunctions.avs")
import("C:\Program Files\XviD4PSP 5\dlls\AviSynth\functions\VideoFunctions.avs")
loadplugin("C:\Program Files\XviD4PSP 5\apps\DGMPGDec\DGDecode.dll")
loadplugin("C:\Program Files\XviD4PSP 5\dlls\AviSynth\plugins\TIVTC.dll")
loadplugin("C:\Program Files\XviD4PSP 5\dlls\AviSynth\plugins\ColorMatrix.dll")
MPEG2Source("C:\Users\Александр\Desktop\Мои документы\test.demuxed.index\test.demuxed.d2v",cpu=0,info=3)
ConvertToYV12(interlaced = true)
ColorMatrix(hints=true, interlaced=true)
TFM(order=1).TDecimate(hybrid=1)
selectTotal1=framecount()/100
selectTotal2=selectTotal1*2
selectrangeevery(selectTotal2,50)

###[FILTERING]###
###[FILTERING]###
Spline36Resize(640, 360)
VIDEO ENCODING
------------------------------
Encoding video to: C:\Temp\0031.avi
XviD 1400kbps 640x360 23.976fps (863 frames)
...first pass...
xvid_encraw.exe: -pass1 "C:\Temp\0031_1.log" -nopacked -bquant_ratio 162 -bquant_offset 0 -max_bframes 2 -qtype 0 -vhqmode 1 -max_key_interval 250 -zones 0,q,3,K -quality 5 -nochromame -notrellis -turbo -threads 4 -i "C:\Temp\0031.avs" -o NUL
Tot: enctime(ms) =6620.00, length(bytes) = 3315880
Avg: enctime(ms) = 7.67, fps = 130.36, length(bytes) = 3842
I frames: 11 frames, size = 37437/ 411812, quants = 3 / 3.00 / 3
P frames: 297 frames, size = 7441/2210116, quants = 3 / 3.00 / 3
B frames: 555 frames, size = 1250/ 693952, quants = 4 / 4.00 / 4
...last pass...
xvid_encraw.exe: -pass2 "C:\Temp\0031_1.log" -nopacked -bquant_ratio 162 -bquant_offset 0 -max_bframes 2 -qtype 0 -vhqmode 4 -max_key_interval 250 -bitrate 2000 -quality 6 -threads 4 -i "C:\Temp\0031.avs" -avi "C:\Temp\0031.avi"
Tot: enctime(ms) =21446.00, length(bytes) = 3213915
Avg: enctime(ms) = 24.85, fps = 40.24, length(bytes) = 3724
I frames: 11 frames, size = 37207/ 409278, quants = 2 / 2.00 / 2
P frames: 297 frames, size = 7069/2099557, quants = 2 / 2.00 / 2
B frames: 555 frames, size = 1270/ 705080, quants = 3 / 3.00 / 3

MUXING
------------------------------
Video file: C:\Temp\0031.avi
Muxing to: C:\Users\Александр\Desktop\Мои документы\test.demuxed.avi
ffmpeg.exe: -i "C:\Temp\0031.avi" -vcodec copy -r 23.976 "C:\Users\Александр\Desktop\Мои документы\test.demuxed.avi"
TIME
------------------------------
Общее время кодирования: 1 min
Файл получился на: 3.09 mb
Но в принципе , если мы получим в логе кодирования на выходе
I frames: 7 frames, size = 42384/ 296692, quants = 2 / 2.86 / 4
P frames: 362 frames, size = 14156/5124660, quants = 2 / 3.33 / 5
B frames: 631 frames, size = 4502/2840981, quants = 3 / 4.88 / 8

Это уже будет смотреться хорошо и вполне приемлемо. Хотя видя показания второго прохода, можно смело установить во втором проходе ограничения по максимальным квантам в данном случае , как -imax 4 -pmax 4 -bmax 5. Это позволит избежать в вашем рипе появления отдельных фреймов с высокими значениями квантизера. Возможно некоторое повышение выходного битрейта(размера). Если результат получается хуже и он вас не устроит, то необходимо увеличить битрейт в командной строке на страничке CLI Настройки видео кодирования или снизить выбранное разрешение и повторить тест. Но дальнейшее повышение битрейта сопряжено с поддержкой стационарными проигрывателями DVD (можно допустить ещё битрейт 2200 кбит\с). Тогда уже имеет смысл включать в последний проход опцию -qpel, которая без сомнения улучшит качество вашего рипа. А вот, если показания будут сразу выглядеть, как идеальные:
I frames: 11 frames, size = 37207/ 409278, quants = 2 / 2.00 / 2
P frames: 297 frames, size = 7069/2099557, quants = 2 / 2.00 / 2
B frames: 555 frames, size = 1270/ 705080, quants = 3 / 3.00 / 3

можно считать, что заданный битрейт в тесте слишком завышен для вашего исходника и надо его снизить до значения, которое покажет нам MediaInfo или AviInfo для данного тестового конечного avi файла.
Если вы применяете во втором проходе -imin 2 -pmin2 -bmin 2, то кодек на некоторых исходниках может войти в режим насыщения по средним квантам (I -2, P-2 и B-3) на гораздо более низком значении битрейта. Для более прогнозируемого попадания в заданный битрейт на чистом типе исходников необходима установка: все минимальные кванты установить в положение 1. Режим с -imin 2 -pmin2 -bmin 2 считается более предпочтительным, поскольку включается более лучший режим распределения квантов и рипы квантом 2 смотрятся также хорошо, как и с 1. Установка в -imin 1 -pmin 1 -bmin 1 может только раздуть размер выходного файла. Поэтому прочтите Методику подбора битрейта и определите всё же за ранее какой битрейт нужен вам для вашего исходника, чтобы получить на выходе оптимальное качество.
Есть исходники, на которых при максимальном битрейте (2500 кбит\с - битрейт звуковой дорожки) средние кванты с -imin 2 -pmin2 -bmin 2 получаются довольно высокими более 4 и выше. Это в первую очередь касается музыкальных клипов и короткометражных мульфильмов, которые характеризуются большим количеством сцен, а при смене сцен первым вставляется I-frame (ключевой кадр). Большое количество I-frames способно сожрать ваш битрейт и качество остальных фреймов снизится при кодировании в заданный размер. Для подобных исходников лучше выставлять вообще -imin 3 -pmin3 -bmin 3, за счёт повышения минимальных квантов идёт понижение средних. Желательно добиться, чтобы средние кванты по I-frames не превышали 4, P-frames не превышали 5 и B-frames не превышали 7. Если и в этом случае они выше,-снижайте разрешение, подключайте VAQ, увеличивайте количество идущих подряд b-frames(- max_bframes 2 или 3) , применяйте сильную фильтрацию шумодавами и осторожно используйте шарперы (по возможности обходитесь без них). Примечание: VAQ - адаптивное квантование распространяется только на P-frames с максимальным квантизером -pmax 3. По результатам тестового прохода установите настройки кодеку уже более точные, например, по тесту вам необходимо задать битрейт 1725 кбит\с, устанавливаем следующие настройки кодеку:
video codec:
XviD
video cli:
-qtype 1 -vhqmode 1 -zones 0,q,3.0,O -nopacked -bquant_ratio 100 -max_key_interval 250 -quality 5 -notrellis -nochromame -turbo
-bitrate 1725 -qtype 1 -vhqmode 1 -zones 0,w,1.0,O -nopacked -bvhq -bquant_ratio 100 -max_key_interval 250 -ostrength 30 -oimprove 30 -odegrade 10 -chigh 20 -clow 8 -vbvmax 4854000 -vbvsize 3145728 -imin 2 -pmin 2 -bmin 2
Видим, что по умолчанию в этом пресете задана матрица квантования стандартная MPEG (-qtype 1), но лучше применить костумные матрицы квантования, которые дадут более лучший результат. Следует иметь в виду, что не все костумные матрицы поддерживаются стационарными DVD плеерами, но есть некоторые, которые не имеют особых проблем, например: Bulletproof's High Quality.cqm, Sharktooth's EQM v3ULR.cqm, Sharktooth's EQM v3UHR.cqm, Sharktooth's EQM v3LR.cqm, Sharktooth's EQM v3HR.cqm, Sharktooth's EQM v3EHR.cqm, Jawor's 1CD Quantization.cqm, HVS Best Picture.cqm. Предупреждаю, что на некоторых типах DVD плееров и они могут вызвать сбой при просмотре. Более стабильны в этом плане матрицы квантования Sharktooth's EQM.
[Profile] [PM]
Display posts:    
Topic locked

Current time is: 09-Dec 16:51

All times are UTC + 3



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum