|
Падре
 Стаж: 15 лет 8 месяцев Сообщений: 63
|
Падре ·
09-Июн-10 02:32
(15 лет 1 месяц назад, ред. 09-Июн-10 11:37)
Nitey писал(а):
Падре
shellgen
Преимущество этого способа только в точном задании количества кадров?
В общем, да. Но задать - одно, а получить - другое. К тому же, например, зная фреймрейт, можно достаточно точно сделать n-секундный/минутный сэмпл для "тюнинга" настроек кодирования, а потом экстраполировать полученные данные на видео в целом. UPD: На выходных выложу еще одну функцию, где в качестве одних из параметров выступают временнЫе значения...
Toshik27162 писал(а):
Кстати никто не знает чем черевато может быть предупреждение кодека
Код:
---[NoImage] x264 [warning]: non-strictly-monotonic pts at frame 1 (0 <= 0)
---[NoImage] x264 [warning]: non-strictly-monotonic pts at frame 2 (0 <= 1)
---[NoImage] x264 [warning]: non-strictly-monotonic pts at frame 3 (0 <= 2)
---[NoImage] x264 [warning]: too many nonmonotonic pts warnings, suppressing further ones
Re: x264 r1510 non-strictly-monotomic points warning
Почитайте указанный пост Dark Shikari и далее.
|
|
Падре
 Стаж: 15 лет 8 месяцев Сообщений: 63
|
Падре ·
13-Июн-10 07:00
(спустя 4 дня, ред. 13-Июн-10 21:02)
А вот и переработанный вариант двух функций для создания сэмплов/тестовых последовательностей.
Код несколько избыточен, но по моим немногочисленным проверкам работоспособен.
Необходима дальнейшая проверка корректности работы функций, но на это у меня нет времени. Обо всех обнаруженных ошибках сообщайте в ПМ.
код
Код:
###
### Мета-функция, используемая другими
###
function _MakeSample (clip clip, int "Seq_Count", int "Seq_Length", int "Seq_Offset", bool "Exact")
{
#Устанавливаем дефолтные значения
Seq_Count=Default(Seq_Count, 100)
Seq_Length=Default(Seq_Length, 50)
Seq_Offset=Default(Seq_Offset, 0)
Exact=Default(Exact, true)
#Некоторые промежуточные переменные
Frames=FrameCount(clip)
SampleLength=Seq_Count*Seq_Length
#Небольшая проверка...
Assert( ( Seq_Count >=1 && Seq_Length >=1 && Seq_Offset >=0) ? true : false, chr(10) + "Допускаются только положительные числа:" + chr(10) +
\"'Seq_Count' и 'Seq_Length' >=1"+ chr(10)+
\"'Seq_Offset' >=0"+ chr(10))
Assert( ( SampleLength <= Frames-Seq_Offset) ? true : false, chr(10) + "Один или несколько параметров заданы неверно!" + chr(10))
#Поехали!
clip=SelectRangeEvery(clip, Ceil((Frames-Seq_Offset)/Seq_Count), Seq_Length, Seq_Offset)
return Exact ? Trim(clip, 0, -SampleLength) : clip
} ###
### MAKESAMPLE
### Равномерная выборка Seq_Count фрагментов,
### состоящих из Seq_Length фреймов,
### начиная с Seq_Offset фрейма
###
function MakeSample (clip clip, int "Seq_Count", int "Seq_Length", int "Seq_Offset")
{
# "Перекрываем" дефолтное значение _MakeSample().
# Устанавливаем по умолчанию размер единичного "куска" в фреймах равным ОКРУГЛ(fps*2)
Seq_Length=Default(Seq_Length, Round(FrameRate(clip)*2))
return _MakeSample(clip, Seq_Count, Seq_Length, Seq_Offset)
} ###
### MAKESAMPLE2
### Равномерная выборка общей длительностью Length секунд,
### состоящая из ряда непрерывных последовательностей KeyInt фреймов (макс.),
### начиная с Offset фрейма
###
function MakeSample2 (clip clip, float "Length", int "KeyInt", int "Offset")
{
Assert( ( Length > 0.0 && KeyInt >=1 && Offset >=0) ? true : false, chr(10) + "Допускаются только положительные числа:" + chr(10)+
\"'Length' >0 "+ chr(10)+
\"'KeyInt' >=1"+ chr(10)+
\"'Offset' >=0"+ chr(10))
N=Length*FrameRate(clip)
Assert( ( N >= KeyInt) ? true : false, chr(10) + "'Length' или 'KeyInt' заданы неверно!" + chr(10))
C=Ceil(N)
F=Floor(N)
R=((Abs(N-C)) < Abs(N-F)) ? C : F
return Trim(_MakeSample(clip, Ceil(N/KeyInt), KeyInt, Offset, false), 0, -R)
}
Использование:
1. Скопировать код, приведенный выше в текстовый файл и сменить расширение на avsi (самозагружаемый формат). Поместить данный файл в папку плагинов ависинта.
2. Примеры MakeSample
2.1. MakeSample() - вызов функции с параметрами по умолчанию. Делает сэмпл "длиной" 100*ОКРУГЛ(fps*2) фреймов, т.е. при fps=24000/1001 (23,976024...) получим сэмпл, состоящий из 4800 фреймов.
2.2. MakeSample(20, 240) - сэмпл "длиной" 4800 фреймов, составленный из 20 фрагментов по 240 фреймов на каждый.
2.3. MakeSample(20, 240, 2400) - тоже самое, что и в п.2.2, но выборка будет производиться не с нулевого, а начиная с 2400-го фрейма.
3. Примеры MakeSample2
3.1. MakeSample2(100, 100) - сэмпл продолжительностью 100 секунд, составленный из последовательностей в 100 фреймов (макс.).
3.2. MakeSample2(110.5, 96) - сэмпл продолжительностью 110.5 секунд, составленный из последовательностей в 96 фреймов (макс.).
3.3. Примечание к функции MakeSample2. По умолчанию для нее параметры не заданы! Принцип создания сэмпла: вначале производится выборка из целого числа последовательностей KeyInt, а затем "излишек отрезается" для получения общей продолжительности сэмпла максимально приближенной к заданной.
4. Оба варианта допускают указание именованных переменных при вызове:
4.1. MakeSample(Seq_Count=100, Seq_length=50, Seq_Offset=1000)
4.2. MakeSample2(Length=600, KeyInt=240, Offset=9600)
|
|
dart_taran
Стаж: 15 лет 10 месяцев Сообщений: 16
|
dart_taran ·
13-Июн-10 23:23
(спустя 16 часов)
Уважаемые профессионалы, у меня вотрос по настройке x264: на что влияет mb-tree( и стоит ли его включать?). Еще затруднения с b-pyramid(тоже не знаю активировать или нет и именно какой из них?)
|
|
Gellard
 Стаж: 16 лет 2 месяца Сообщений: 658
|
Gellard ·
14-Июн-10 09:22
(спустя 9 часов)
dart_taran
Цитирую свои выдержки:
Цитата:
B-Pyramid. Если вы используете больше одного B-кадра (а вы точно используете больше), обязательно включите эту опцию: она дает небольшой прирост к качеству без потери скорости, однако древние декодеры на libavcodec (выпущенные до марта 2005 года) не смогут прочитать ваше видео. Небольшая потеря, не так ли? Ставим значение Normal (b_pyramid=2).
Насчет mb-tree сам бы послушал с удовольствием.
|
|
elfr0nt
 Стаж: 18 лет 1 месяц Сообщений: 107
|
elfr0nt ·
14-Июн-10 14:09
(спустя 4 часа, ред. 14-Июн-10 14:09)
Макрос AvsP пакетной обработки видеосэмплов с целью сравнения их скринов:
Код
Код:
import os
import subprocess # Define numFrames interval between screenshots
numFramesInterval = 0 # Get the directory containing files
dirname = avsp.GetDirectory() # Clean & remove ScreenShots directory
try:
for root, dirs, files in os.walk(dirname + "\ScreenShots", topdown=False):
for name in files:
os.remove(os.path.join(root, name))
os.rmdir(dirname + "\ScreenShots")
except:
exc = 1 # Make new ScreenShots directory
try:
os.mkdir(dirname + "\ScreenShots")
except:
exc = 1 if dirname: #and avsp.GetText() == '':
# Create the list of file names in the directory which are bitmaps or jpegs
namelist = []
for name in os.listdir(dirname):
if os.path.splitext(name)[1] in ('.mkv', '.avs'):
namelist.append(name)
# Create a progress box
pbox = avsp.ProgressBox(len(namelist), 'Processing videos...')
# Generate each of the video files
for i, filename in enumerate(namelist):
if filename <> "ScreenShots":
try:
os.mkdir(dirname + "\ScreenShots" + chr(92) + filename)
except:
exc = 1
fullname = os.path.join(dirname, filename)
# Clear all the text in the tab
avsp.SetText('')
# Get the extension-based template string
srctxt = avsp.GetSourceString(fullname)
avsp.InsertText('%s\n' % srctxt)
avsp.HideVideoWindow()
if numFramesInterval < 1:
# Define numFrames interval between screenshots
numFramesInterval = avsp.GetTextEntry("Set frames interval between screenshots. [Clip framecount = " + str(avsp.GetVideoFramecount())+ "]")
for ind in range(50, avsp.GetVideoFramecount(), int(numFramesInterval)):
avsp.ShowVideoFrame(ind)
newname = os.path.join(dirname + '\ScreenShots' + chr(92) + filename, 'Index-' + str(ind) + '; Frame-' + str(avsp.GetFrameNumber()) + '; File-' + filename + '.png')
# Save the image as a png
avsp.SaveImage(newname, ind)
# Update the progress box, exit if user canceled
if not pbox.Update(i):
break
# Destroy the progress box
pbox.Destroy()
# Clear the remaining text
avsp.SetText('')
# Open explorer with ScreenShots folder
subprocess.Popen('explorer ' + chr(34) + dirname + '\ScreenShots' + chr(34)) else:
avsp.MsgBox('Macro aborted')
Использование
1. Сохранить код в файле с расширением .ру (Python) и положить в папку макросов ..\AvsP\macros\
2. Запуск из AvsP через меню "Macros"
3. Параметры макроса (задаются при выполнении):
- путь к папке с обрабатываемыми файлами (.mkv и .avs)
- интервал в фреймах между создаваемыми скриншотами
4. Результат работы - папка Screenshots со сделанными скринами
 Для сравнения с исходником не подойдет, т.к. AvsP имеет дурную привычку пропускать фреймы при скроллинге mkv-шных контейнеров. Если кто знает, как победить проблему, буду рад совету.
|
|
Toshik27162
  Стаж: 16 лет 9 месяцев Сообщений: 435
|
Toshik27162 ·
14-Июн-10 16:05
(спустя 1 час 56 мин.)
из предыдущих постов
Цитата:
-mbtree
Грубо говоря, опускает кванты макроблокам, на которые часто ссылаются близлежащие в радиусе --rc-lookahead фреймы и vice versa. Чем ниже --qcomp, тем больше эффект от mbtree.
На SSIM и прочих попугаях всегда сказывается положительно, чего не скажешь о визуальном восприятии. На анимации наверное хорошо, на живом видео субъективно пока не очень. Более эффективно работает в мультипроходе, в crf тоже судя по результатам неплохо, но теоретически менее эффективно.
Опыт использования MBtree на средних и высоких битрейтах и высоко детальном видео
Для анимации и битрейтодефицитных пережаток возможно всё и хорошо, но в остальном ничего хорошего не замечено пока... Особенно на динамике и с зерном вообще IMHO плохо, для себя остановился пока на --no-mbtree.
По своему опыту решил включать только если битрейта не хватает.
|
|
miscalin11
 Стаж: 17 лет 6 месяцев Сообщений: 325
|
miscalin11 ·
14-Июн-10 18:07
(спустя 2 часа 1 мин.)
Toshik27162 писал(а):
По своему опыту решил включать только если битрейта не хватает.
 как показывает практика, mbtree как раз имеет смысл использовать, если битрейт рипа достаточно высок. Включение mbtree на низкобитрейтных рипах, может одарить вас прекрасными артефактами на темных сценах.
|
|
dart_taran
Стаж: 15 лет 10 месяцев Сообщений: 16
|
dart_taran ·
14-Июн-10 21:23
(спустя 3 часа, ред. 14-Июн-10 21:23)
Gellard писал(а):
dart_taran
Цитирую свои выдержки:
Цитата:
B-Pyramid. Если вы используете больше одного B-кадра (а вы точно используете больше), обязательно включите эту опцию: она дает небольшой прирост к качеству без потери скорости, однако древние декодеры на libavcodec (выпущенные до марта 2005 года) не смогут прочитать ваше видео. Небольшая потеря, не так ли? Ставим значение Normal (b_pyramid=2).
Насчет mb-tree сам бы послушал с удовольствием.
Спасибо за информацию.
Mb-Tree попробовал на crf 27. Файл без mbtree 5mb, с mbtree - 8mb. Особого прироста качества я не заветил. А вот в abr(т.к. битрейты задаются одинаково) на 400kb\s, изображение с mbtree посыпалось. На средних битрейтах(1000 kb\s) качество с mb-tree вроде лучше, особенно на удаленных объектах, но в некоторых(приближенных)местах изображение искожантся На высоких еще не пробовал.
Taran2L_87 писал(а):
undre19
ВОТ компетентный ответ на твой вопрос. Целиком и полностью.
Не буду комментировать. Оригинал лучше воспринимается, чем его перевод =)
Вот тут, похоже, действительно что-то дельное, только автор не перевел, а я с англ. не оч. дружу
З.Ы. Еще один вопрос: как надо кодировать: 1 pass crf, второй-abr или оба abr или как? Если можно, то с подробностями.
|
|
Toshik27162
  Стаж: 16 лет 9 месяцев Сообщений: 435
|
Toshik27162 ·
15-Июн-10 07:54
(спустя 10 часов, ред. 15-Июн-10 07:54)
miscalin11
хорошо когда есть разные мнения, но я дерево все равно стараюсь не использовать. В любом случае вопрос требует отдельного изучения-надо будет поиграться с опцией и потестить.
|
|
Skazhutin
 Стаж: 18 лет Сообщений: 6701
|
Skazhutin ·
15-Июн-10 11:32
(спустя 3 часа)
elfr0nt писал(а):
1. Сохранить код в файле с расширением .ру (Python) и положить в папку макросов ..\AvsP\macros\
2. Запуск из AvsP через меню "Macros"
Закинул sample.py в папку \AvsP\macros\ но в меню macros ничего нового не появилось:
|
|
elfr0nt
 Стаж: 18 лет 1 месяц Сообщений: 107
|
elfr0nt ·
15-Июн-10 13:14
(спустя 1 час 41 мин., ред. 15-Июн-10 13:14)
Skazhutin писал(а):
Закинул sample.py в папку \AvsP\macros\ но в меню macros ничего нового не появилось:
Странная ситуация... Может быть AvsP забыли перезапустить, после того как скопировали макрос в папку (на лету он их не подключает)?
|
|
Skazhutin
 Стаж: 18 лет Сообщений: 6701
|
Skazhutin ·
15-Июн-10 13:28
(спустя 14 мин.)
Не забыл 
Да я так, ради интереса. Не знаю даже зачем применять. Сэмплы режу в mmg а скрины делаю открыв в AVSP в двух вкладках сорц и рип
|
|
elfr0nt
 Стаж: 18 лет 1 месяц Сообщений: 107
|
elfr0nt ·
15-Июн-10 14:04
(спустя 35 мин.)
Тогда, еще более странно ... Может дело в окружении - у меня AvsP v.2.0.2 на висте и 7-ке отрабатывает нормально. А насчет применения - мне показалось неудобным сравнивать кодированные с разными настройками сэмплы в AvsP, в графическом просмотрщике это все делается приятнее. Хотя, настаивать не буду - я только приступил к знакомству с этой кухней
|
|
Nitey
 Стаж: 17 лет 10 месяцев Сообщений: 3009
|
Nitey ·
16-Июн-10 00:30
(спустя 10 часов)
Подскажите, как точно сохранить цветопередачу при кодировании из VC-1?
Получается немного темнее чем в исходнике почему-то.
|
|
Toshik27162
  Стаж: 16 лет 9 месяцев Сообщений: 435
|
Toshik27162 ·
16-Июн-10 07:59
(спустя 7 часов)
я вот тут рип один делаю, и в итоге кванты по р-кадрам выше чем у b, чем это может быть вызвано?
|
|
TurboPascal7
 Стаж: 16 лет 3 месяца Сообщений: 667
|
TurboPascal7 ·
16-Июн-10 10:39
(спустя 2 часа 39 мин., ред. 16-Июн-10 10:39)
Toshik27162
Loren Merritt, кажется, писал(а):
B-frames are more useful in low-motion scenes, and low motion scenes have smaller frames than high-motion. So the average B-frame size would be less than the average P-frame size even if any one B-frame were the same size as the adjacent P-frame.
For the same reason, you sometimes see that the average B-frame quantizer is less than the average P-frame quantizer even though each B-frame has higher quantizer than the adjacent P-frames.
|
|
Toshik27162
  Стаж: 16 лет 9 месяцев Сообщений: 435
|
Toshik27162 ·
16-Июн-10 11:11
(спустя 32 мин.)
TurboPascal7
примерно понял, короче такое иногда бывает и не стоит обращать на это внимание.
|
|
Падре
 Стаж: 15 лет 8 месяцев Сообщений: 63
|
Падре ·
16-Июн-10 12:42
(спустя 1 час 31 мин., ред. 17-Июн-10 01:13)
Toshik27162 писал(а):
я вот тут рип один делаю, и в итоге кванты по р-кадрам выше чем у b, чем это может быть вызвано?
Если квантователи В-фреймов имеют приближенно симметричное (частный случай - приближенно нормальное) распределение, а Р-фреймов асимметричное, то значения средних мало о чем говорят. В таком случае лучше ориентироваться на гистограммы (ряды) распределения квантователей в целом, чтобы выяснить действительно ли распределение асимметрично. Если так, то просто успокоиться. Посмотрите на результаты DRF анализа (прога - avinaptic).
|
|
Toshik27162
  Стаж: 16 лет 9 месяцев Сообщений: 435
|
Toshik27162 ·
16-Июн-10 15:51
(спустя 3 часа)
Падре
ну вот у мня что-то получилась, правта этот график мне ни о чем не говорит
|
|
Падре
 Стаж: 15 лет 8 месяцев Сообщений: 63
|
Падре ·
17-Июн-10 01:46
(спустя 9 часов, ред. 17-Июн-10 05:19)
Nitey писал(а):
Подскажите, как точно сохранить цветопередачу при кодировании из VC-1?
Получается немного темнее чем в исходнике почему-то.
Добавьте к командной строке х264 нижеследующее:
Код:
--colorprim "bt709" --colormatrix "bt709" --transfer "bt709"
Разумеется если речь идет о стандарте ITU-R BT.709.
Главное - в скрипте никаких colormatrix и пр., что явно указывает на "цветопередачу". Также следует избегать преобразований форматов типа YV12-> RGB32->YV12 и т.п., сужения/расширения диапазона (например, TV->PC).
Toshik27162 писал(а):
Падре
ну вот у мня что-то получилась, правта этот график мне ни о чем не говорит
Мне тоже  , ибо это "временной" ряд, а не ряд распределения. Смотрите текстовый лог DRF-анализа.
"Суета сует, сказал Екклесиаст, суета сует, - все суета!" ©
Визуально оцените видеоряд, если нареканий нет, то и заморачиваться не стоит.
|
|
Toshik27162
  Стаж: 16 лет 9 месяцев Сообщений: 435
|
Toshik27162 ·
17-Июн-10 08:20
(спустя 6 часов)
|
|
multisex
Стаж: 16 лет 9 месяцев Сообщений: 7
|
multisex ·
17-Июн-10 15:56
(спустя 7 часов)
я кодирую в два прохода с битрейтом 460кбит на динамичном участке видео битрейт возрастает до 5000кбит, помоему это перебор, как мне заставить кодек не использовать битрейт выше скажем 1500кбит?
|
|
ВТБ
 Стаж: 16 лет 7 месяцев Сообщений: 453
|
ВТБ ·
17-Июн-10 16:05
(спустя 8 мин.)
multisex Вы бы не могли привести параметры кодирования?
|
|
multisex
Стаж: 16 лет 9 месяцев Сообщений: 7
|
multisex ·
17-Июн-10 16:17
(спустя 12 мин.)
скрытый текст
"vfw4x264.exe" --profile high --pass 1 --bitrate 460 --stats "star.stats" --thread-input --threads 8 --b-adapt 2 --b-pyramid normal --qpmin 16 --qpmax 32 --aq-mode 2 --merange 32 --me umh --partitions all --trellis 2 --no-fast-pskip --sar 1:1 --output NUL "star.avs" "vfw4x264.exe" --profile high --pass 2 --bitrate 460 --stats "star.stats" --thread-input --threads 8 --b-adapt 2 --b-pyramid normal --qpmin 16 --qpmax 32 --aq-mode 2 --merange 32 --me umh --partitions all --trellis 2 --no-fast-pskip --sar 1:1 --output "star.mkv" "star.avs"
|
|
ВТБ
 Стаж: 16 лет 7 месяцев Сообщений: 453
|
ВТБ ·
17-Июн-10 16:31
(спустя 14 мин.)
multisex
mbtree по дефолту включено?
Вероятно, такое повышение битрейта действительно оправдано.
Если хочется подпортить динамику в пользу статики, то я бы предложил снизить qcomp.
multisex писал(а):
битрейт возрастает до 5000кбит, помоему это перебор
Если нет аппаратных ограничений, то в чём перебор?
|
|
multisex
Стаж: 16 лет 9 месяцев Сообщений: 7
|
multisex ·
17-Июн-10 16:45
(спустя 13 мин., ред. 17-Июн-10 16:45)
mbtree включено.
я наверно просто увеличу максимальный размер квантайзера это сработает, хоть и подпортит картинку. А перебор в том что это видео для демонстрации в интернете.
|
|
ВТБ
 Стаж: 16 лет 7 месяцев Сообщений: 453
|
ВТБ ·
17-Июн-10 17:02
(спустя 17 мин., ред. 17-Июн-10 17:02)
multisex
--vbv-maxrate <килобиты в секунду>
multisex писал(а):
увеличу максимальный размер квантайзера это сработает, хоть и подпортит картинку
Минимальный и максимальный квант уточнять обычно не требуется, убирайте/увеличивайте смело.
|
|
multisex
Стаж: 16 лет 9 месяцев Сообщений: 7
|
multisex ·
17-Июн-10 17:20
(спустя 18 мин., ред. 17-Июн-10 17:20)
--vbv-maxrate я пробовал не прокатило
а к размерам кванта я пришёл опытным путём дело в том что на низких битрейтах кодек не адекватно распределяет кванты вставляет большие кванты туда где это очень хорошо видно
|
|
ВТБ
 Стаж: 16 лет 7 месяцев Сообщений: 453
|
ВТБ ·
17-Июн-10 17:31
(спустя 10 мин.)
multisex писал(а):
--vbv-maxrate я пробовал не прокатило
--vbv-bufsize указывать не забывали?
multisex писал(а):
на низких битрейтах кодек не адекватно распределяет кванты вставляет большие кванты туда где это очень хорошо видно
Может mbtree всё-же отключить, а рефреймов добавить, максимальный квант увеличить и qcomp поиграться?
А лучше снизить разрешение...
|
|
TurboPascal7
 Стаж: 16 лет 3 месяца Сообщений: 667
|
TurboPascal7 ·
18-Июн-10 11:36
(спустя 18 часов)
ВТБ писал(а):
Может mbtree всё-же отключить
Самый бесполезный совет, который можно было дать для низких битрейтов. 
Имхо, стоит посмотреть кванты фрэймов с завышенным рейтом, если квант на них равен маскимальному - повышать его. Если нет, смотреть соседние и крутить qpstep, ну и vbv-maxrate с qcomp,это да.
|
|
|