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

Тема закрыта
 
Автор Сообщение

Серый1779 ®

Пол: Мужской

Стаж: 5 лет 5 месяцев

Сообщений: 3509

Откуда: Украина

Создавать темы 02-Мар-2019 22:58

[Цитировать]

Методика подбора битрейта под ваш исходник для получения оптимального по качеству рипа 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.
[Профиль] [ЛС]
Показать сообщения:    
Тема закрыта

Текущее время: 18-Апр 05:55

Часовой пояс: UTC + 3



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы