[не удалять] Кодирование DVD в XviD с помощью AviSynth, ну и с фильтрами [архив №1]

Страницы :   Пред.  1, 2, 3 ... 62, 63, 64 ... 99, 100, 101  След.
Тема закрыта
 

Sergios666

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

Сообщений: 16


Sergios666 · 10-Окт-09 16:20 (16 лет 2 месяца назад, ред. 10-Окт-09 16:20)

Bladru писал(а):
ITU-R Recommendation BT.709. Что имелось в виду под pc.709 я, конечно, догадываюсь, но стандарта такого нет, если что.
Разница между "Rec" и"PC" в диапазоне. Для "Rec" (сокращение от названий стандартов ITU- R Recommendation BT.601 (старое обозначение- CCIR-601)/BT.709) используемый диапазон 16-235 для люмы и 16-240 для хромы. В случае "PC" (т.н. “full-swing”) диапазон полный, т.е. 0-255.
А в стандартах этого не будет, ибо они представляют собой стандарты телевизионного вещания SDTV/HDTV.
[Профиль]  [ЛС] 

_Woland_

Стаж: 17 лет

Сообщений: 1067

_Woland_ · 10-Окт-09 19:37 (спустя 3 часа, ред. 10-Окт-09 19:37)

Поторопился я, что этот скрипт нормально деинтерлейсит:
Sergios666 писал(а):
nnedi2(field=3, dh=false, Y=true, U=true, V=true, nsize=2, qual=3, pscrn=true, threads=0, opt=5)
SelectOdd() # SelectEven() #Отбрасываем ненужное. Для предоставленного клипа выбрать только нечетные кадры
Вот такая жуть выплывает:
скрытый текст

Пока чище всего работает такой срипт:
скрытый текст
Код:
AssumeTFF() # верхнее поле первым
#AssumeBFF() # нижнее поле первым
edeintted = nnedi2(field=-2,qual=3)
TDeint(edeint=edeintted,order=-1,mode=2,sharp=true,mtnmode=3,full=false,tryWeave=false,type=1,emask=TMM(mode=1))
[Профиль]  [ЛС] 

GKtomsk

Стаж: 19 лет

Сообщений: 175

GKtomsk · 10-Окт-09 21:53 (спустя 2 часа 16 мин., ред. 10-Окт-09 21:54)

Bladru писал(а):
Нет. См. выше.
Цитата:
http://www.avisynth.org.ru/docs/russian/externalfilters/colormatrix.htm#description
ColorMatrix корректирует цвета потоков MPEG-2 DVD. Более корректно, многие MPEG-2 потоки используют слегка отличающиеся коэффициенты (называемые Rec.709) для хранения цветовой информации, чем это делают подпрограммы преобразования цвета AviSynth или XviD/DivX декодеры (называемые Rec.601), с тем результатом, что клипы DivX/XviD или MPEG-2, закодированные TMPGEnc/QuEnc отображатся со слегка смещенными цветами (что выглядит подобно небольщой разницы в яркости). Это может быть проверено путем открытия потока MPEG-2 прямо в VirtualDubMod.

Bladru писал(а):
Нужно иметь на редкость извращённый ум или полное непонимание сути вопроса, чтобы делать YUV->RGB преобразование в процессе видеокодирования.
в сети встречается множество руководств по созданию рипов.
где рекомендуется также использование фильтров virtualdub, которые требуют rgb на входе.
к примеру http://forum.hq-video.ru, думаю, мозг у тамошних постояльцев не такой уж и извращенный
мне вот другое интересно, если материал был перекодирован из hd (rec.709) в sd/mpeg-4
и к результату нужно будет применить дабовский фильтр - какие коэфф. использовать?
если глубже, то делает ли что то xvid энкодер с цветом?
пс я в этом нуб, так что прошу сильно не пинать
[Профиль]  [ЛС] 

Furyx

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

Сообщений: 1331

Furyx · 10-Окт-09 22:12 (спустя 18 мин.)

подскажите соответствие с алгоритмами ресайза ависинта

и что обычно у вас выбрано? (сам обычно использую mplayer и у меня выставлен сплайн)
[Профиль]  [ЛС] 

Sergios666

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

Сообщений: 16


Sergios666 · 11-Окт-09 12:23 (спустя 14 часов, ред. 12-Окт-09 18:56)

Furyx писал(а):
подскажите соответствие с алгоритмами ресайза ависинта
и что обычно у вас выбрано? (сам обычно использую mplayer и у меня выставлен сплайн)
http://avisynth.org/oldwiki/index.php?page=Resize
или
http://avisynth.org.ru/docs/english/corefilters/resize.htm
[Профиль]  [ЛС] 

_Woland_

Стаж: 17 лет

Сообщений: 1067

_Woland_ · 11-Окт-09 12:39 (спустя 15 мин.)

Sergios666
Мне проще скрипт проверить на определенных проблемных кадрах в AvsP.
[Профиль]  [ЛС] 

Furyx

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

Сообщений: 1331

Furyx · 11-Окт-09 14:17 (спустя 1 час 38 мин.)

Sergios666
читать доки я умею, я не понимаю что такое A=-.75 (PS 2.0).
[Профиль]  [ЛС] 

shellgen

VIP (Адм)

Стаж: 19 лет 3 месяца

Сообщений: 6416

shellgen · 11-Окт-09 14:24 (спустя 6 мин.)

Furyx
А что там непонятного ->
bicubicresize(X,Y,0,A)
[Профиль]  [ЛС] 

ARARAND

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

Сообщений: 2485


ARARAND · 11-Окт-09 17:51 (спустя 3 часа, ред. 11-Окт-09 17:51)

shellgen
Да уж, "простые" интегралы,- что тут не понятного...
[Профиль]  [ЛС] 

Bladru

Стаж: 18 лет 2 месяца

Сообщений: 542


Bladru · 11-Окт-09 20:07 (спустя 2 часа 16 мин.)

ARARAND писал(а):
Да уж, "простые" интегралы,- что тут не понятного...
Там действительно всё просто, и никаких интегралов нет. Но, скорее всего, shellgen не ту ссылку вставил.
Furyx
Сплайн mplayer'а это скорее всего тот же bicubic. "A" означает величину резкости. (PS 2.0) — шейдеры.
GKtomsk писал(а):
к примеру http://forum.hq-video.ru, думаю, мозг у тамошних постояльцев не такой уж и извращенный
Я тот форум не читаю, если есть какие-либо конкретные примеры, то их и приводи.
GKtomsk писал(а):
мне вот другое интересно, если материал был перекодирован из hd (rec.709) в sd/mpeg-4
и к результату нужно будет применить дабовский фильтр - какие коэфф. использовать?
Так вот и не надо юзать дабовские фильтры. Уместно предполагать rec.601 для SD, если нет явных указаний на иное.
GKtomsk писал(а):
пс я в этом нуб, так что прошу сильно не пинать
Посмотри этот пост, может что-то прояснится.
Sergios666 писал(а):
А в стандартах этого не будет
JPEG, MJPEG, не? К тому же, с моими словами твой пост никак не связан.
[Профиль]  [ЛС] 

_Woland_

Стаж: 17 лет

Сообщений: 1067

_Woland_ · 12-Окт-09 00:33 (спустя 4 часа)

Sergios666 писал(а):
Посмотри заэнкоденный кусок.
Посмотрел. Качество неоднозначное, можете выложить непосредственно деинтерлейсер? Интересует именно он.
[Профиль]  [ЛС] 

Юpист

RG All Films

Стаж: 17 лет

Сообщений: 2726

Юpист · 12-Окт-09 01:12 (спустя 39 мин., ред. 12-Окт-09 01:12)

Люди добрые подскажите плиз , что это за формат TS такой и каким скриптом его в даб загнать?
жду ответа как соловей лета
[Профиль]  [ЛС] 

Sergios666

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

Сообщений: 16


Sergios666 · 12-Окт-09 19:31 (спустя 18 часов, ред. 13-Окт-09 08:46)

Юpист писал(а):
Люди добрые подскажите плиз , что это за формат TS такой и каким скриптом его в даб загнать?
жду ответа как соловей лета
TS - Transport Stream, т.е. транспортный поток. Ввиду того, что многие тс изначально "кривые", я бы воспользовался tsMuxer для выдергивания raw данных (демультиплексирования), а лучше мьюкс в .m2ts, с последующим помещением их в какой-нибудь контейнер, к примеру, в матрешку (mkv). Потом скрипт с DSS2 вместо обычного DirectShowSource (DSS2 для матрешки идеален, только нужно указать правильно фпс) и делайте с видео/аудио все, что захотите.
_Woland_ писал(а):
Sergios666 писал(а):
Посмотри заэнкоденный кусок.
Посмотрел. Качество неоднозначное, можете выложить непосредственно деинтерлейсер? Интересует именно он.
Снес паку с футурамой, но сейчас возьмусь заново. Уж больно самому интересна стала проблема...
В прошлом использовался ConditionalFilter с функцией IsCombedTIVTC для выдергивания фреймов с "гребенкой" для обработки, оставляя при этом нетронутыми "чистые" кадры.
[Профиль]  [ЛС] 

Гость


Гость · 12-Окт-09 21:49 (спустя 2 часа 17 мин.)

Пытаюсь закодировать 3-х часовой фильм на половину dvd.
При этом размер полученного видео меньше указанного в настройках на 13! процентов.
Переделывал несколько раз и всё равно та же самая ерунда.
До этого сжимал несколько фильмов и xvid v122 всегда попадал в размер.
 

Tempter57

Старожил

Стаж: 17 лет 3 месяца

Сообщений: 5029

Tempter57 · 13-Окт-09 12:02 (спустя 14 часов, ред. 13-Окт-09 12:02)

All
Обновите в plugins mvtools v2.5.7
kn22
Код:
video codec:
XviD
video cli:
-qtype 1 -vhqmode 4 -nopacked -bvhq -max_bframes 1 -lumimasking
-size 2100000 -qtype 1 -vhqmode 4 -nopacked -bvhq -max_bframes 1 -lumimasking -imin 1 -bmin 1 -pmin 1
[Профиль]  [ЛС] 

_Woland_

Стаж: 17 лет

Сообщений: 1067

_Woland_ · 13-Окт-09 12:14 (спустя 12 мин.)

Tempter57 писал(а):
Обновите в plugins mvtools v2.5.7
Я вначале открыл страницу на русском, а там в changelog'ах странная хронология. Вначале ничего не понял, перешёл на английскую - оказалось месяц просто неправильно указали на русскоязычной. Спасибо за новость.
[Профиль]  [ЛС] 

vamosss

Top Seed 04* 320r

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

Сообщений: 1026

vamosss · 14-Окт-09 01:31 (спустя 13 часов)

Подскажите, пожалуйста, такой момент.
Задача - сделать BDRip h.264 из BD Remux'а (VC-1).
Например, такой из такого.
Нужно ли тут применять colormatrix, и если нужно, то как?
Кодируется все это дело в MeGUI, он при открытии видео (и настройках кропа и т.п.) выдает в результате вот такой скрипт:
Код:
DirectShowSource("...\Potter.Stone.Video.mkv", fps=23.976, audio=false, convertfps=false)
crop( 0, 144, 0, -136)
LanczosResize(960,400) # Lanczos (Sharp)
Все бы было хорошо, но есть подозрение, что необходим colormatrix или что-то аналогичное.
Во-первых, на основе вышенаписанного про hd (709) и sd (601).
Во-вторых, наблюдается такая штука.
Вот тут представлено сравнение накодированного с исходником. Исходник был открыт, откроплен, ресайзлен через ависинт (.avs открыт в плеере). Цвета исходника и рипа идентичны.
А вот тут исходник был открыт "в натуре" в .mkv, скриншоты сохранены, затем откроплены и отресайзлены в фотошопе. Т.е., как я понимаю, исходник был воспроизведен в "оригинальных" цветах, а не в том, что "подал" ависинт после скрипта. Цвета исходника и рипа отличаются (во многих местах цвета исходника ярче).
Так, чего еще написать? При кодировании открывается Haali Media Splitter и ffdshow.
Вот, собственно, и вопрос. Надо ли при подобных рипах применять colormatrix или какое-нибудь аналогичное действие? И если надо, то как?
[Профиль]  [ЛС] 

Bladru

Стаж: 18 лет 2 месяца

Сообщений: 542


Bladru · 14-Окт-09 03:01 (спустя 1 час 29 мин.)

vamosss
Надо преобразовывать 709->601, если делаешь ресайз из HD в SD. ffdshow определяет SD если ширина <= 1024 и высота < 600.
[Профиль]  [ЛС] 

vladimiryakushin

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

Сообщений: 3171

vladimiryakushin · 14-Окт-09 03:16 (спустя 14 мин.)

Не нужно никаких colormatrix-ов при HD исходнике.
Bladru писал(а):
Надо преобразовывать 709->601
Не нужно! Наоборот иксу указать --colormatrix "bt709"
Грузить через ffdshow плохо.
При исходнике .vc1
Если видеокарта NVIDIA, то индексировать видео с помощью dgvc1decnv
Полученный файл *.dgv загружать:
vc1source(".....................................dgv")
Если карта не NVIDIA, то построить граф и полученный файл загружать:
directshowsource("...........................grf",video=true,audio=false,fps=23.976,convertfps=false)
[Профиль]  [ЛС] 

vamosss

Top Seed 04* 320r

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

Сообщений: 1026

vamosss · 14-Окт-09 03:30 (спустя 14 мин., ред. 14-Окт-09 03:30)

Так. Сам, в общем, дошел.
Код:
ColorMatrix(mode="Rec.709->Rec.601")
Сравнение тут: http://comparescreenshots.slicx.com/comparison/17394/
(#1 с примененным колорматриксом, #2 - без него)
Интересно, а можно это дело как-то автоматизировать - как с DVD - или придется каждый раз глазками смотреть? Или просто эта коррекция нужна всегда и все тут?..


Блин, пока впихивал скриншоты сликсу, тут уже появились ответы! Даже не ожидал в такое время! Спасибо!


vladimiryakushin писал(а):
Не нужно никаких colormatrix-ов при HD исходнике.
Bladru писал(а):
Надо преобразовывать 709->601
Не нужно! Наоборот иксу указать --colormatrix "bt709"
Грузить через ffdshow плохо.
При исходнике .vc1
Если видеокарта NVIDIA, то индексировать видео с помощью dgvc1decnv
Полученный файл *.dgv загружать:
vc1source(".....................................dgv")
Если карта не NVIDIA, то построить граф и полученный файл загружать:
directshowsource("...........................grf",video=true,audio=false,fps=23.976,convertfps=false)
Вот спасибо! К сожалению, карта не NVIDIA. Для последней я вот видел рецепт, а для своей ATI нигде не наблюдал
Подскажите только еще насчет "построить граф", плиз. Я так понимаю, это через GraphEdit. А где бы поподробнее об этом почитать - как его строить и что надо получить?
Да, и почему плох colormatrix, предложенный Bladru?
[Профиль]  [ЛС] 

Sergios666

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

Сообщений: 16


Sergios666 · 14-Окт-09 04:12 (спустя 41 мин., ред. 14-Окт-09 06:59)

_Woland_ писал(а):
Sergios666 писал(а):
Посмотри заэнкоденный кусок.
Посмотрел. Качество неоднозначное, можете выложить непосредственно деинтерлейсер? Интересует именно он.
Переделал полность скрипт, вроде по-лучше твоего работает, но медленнее на "гребенках" за счет вызова функции устранения шума. Можно поднять пороги для "хард" деинтерлейса. Привожу скрипт целиком как он есть у меня, чтобы ничего не пропустить.
скрытый текст
Код:

LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\ColorMatrix.dll") # v 2.5 by tritical
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\Decomb.dll") #  by Donald Graft aka neuron2
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\TIVTC.dll") # by tritical
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\nnedi2.dll") # by tritical
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mvtools2.dll")  # by Fizick
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\SSE3Tools.dll")  # RemoveGrain (SSE Tools) by Rainer Wittmann
                                                                   # aka kassandro # http://www.removegrain.de.tf/
SetMemoryMax(1024)
function MakeTFF(clip cl) {
return GetParity(cl) ? cl : ComplementParity(cl)
}
function MakeBFF(clip cl) {
return GetParity(cl) ? ComplementParity(cl) : cl
}
function MDegrain2I(clip cl) {
fs=cl.Interleaved2Planar().SeparateFields()
super=MSuper(fs, planar=true)
bv2=MAnalyse(super, isb = true, delta = 2, overlap=4)
fv2=MAnalyse(super, isb = false, delta = 2, overlap=4)
bv4=MAnalyse(super, isb = true, delta = 4, overlap=4)
fv4=MAnalyse(super, isb = false, delta = 4, overlap=4)
fs.MDegrain2(super, bv2, fv2, bv4, fv4, thSAD=800, planar=true)
# thSAD можно увеличить или уменьшить в зависимости от количества артефактов после "жесткого" деинтерлейса
return Planar2Interleaved().Weave()
}
function HardDeInt(clip cl) {
return MDegrain2I(cl).Telecide(back=2, guide=2, gthresh=5.0, post=2, \
vthresh=12.0, bthresh=12.0, dthresh=5.0, blend=false, nt=5, show=false)
}
function SoftDeInt(clip cl) {
return TFM(nnedi2(cl, field=-1, qual=3), order=-1, field=-1, mode=0, PP=6, display=false, \
slow=2, cthresh=3, MI=14, chroma=true, blockx=8, blocky=8, scthresh=6.0, micmatching=2)
}
#FFIndex("C:\___FILM\Test\Futurama_Trim.VOB")
FFVideoSource("C:\___FILM\Test\Futurama_Trim.VOB") #подставить свой фрэйм-сервер
ColorMatrix(source=2, dest=0, interlaced=true, [*hints=true,*] threads=0)
# Rec.601->Rec.709. hints раскомментировать, если используется "примочки" Donald Graft's (напр. MPEG2Source)
# и парметр info=3
origin=last
#MAIN SCRIPT
MakeTFF()
ConditionalFilter(last, HardDeInt (last), last, \
"IsCombedTIVTC(last, cthresh=12, chroma=true, MI=30, blockx=128, blocky=128)", "=", "true", show=false)
ConditionalFilter(last, SoftDeInt (last), last, \
"IsCombedTIVTC(last, cthresh=3, chroma=true, MI=14, blockx=8, blocky=8)", "=", "true", show=false)
# END MAIN
# Шумодавы # Шарперы
# Предпросмотр
sub_text_size=18 #
StackHorizontal(Subtitle("Deinterlaced", y=last.height-sub_text_size-8, size=sub_text_size), \
Subtitle(origin,"Original", y=origin.height-sub_text_size-8, size=sub_text_size))
Lanczos4Resize(720*2,576) #
# Просмотр окончен :)
#Crop(8, 4, -6, -4)
[Профиль]  [ЛС] 

Tempter57

Старожил

Стаж: 17 лет 3 месяца

Сообщений: 5029

Tempter57 · 14-Окт-09 07:04 (спустя 2 часа 51 мин.)

Sergios666 писал(а):
function MDegrain2I
В данном скрипте эта функция излишняя, если производится деинтерлейс. Данную быструю функцию шумоподавления из описания плагина mvtools2 применяют, если оставляем наоборот видео интерлейсным, например, давим шум видео интерлейсной видеокамеры этой функцией и отправляем далее обработанное видео на кодировку в Carbon Coder.
[Профиль]  [ЛС] 

Sergios666

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

Сообщений: 16


Sergios666 · 14-Окт-09 08:39 (спустя 1 час 34 мин., ред. 14-Окт-09 09:49)

Tempter57
Цитата:
В данном скрипте эта функция излишняя
Нет, не лишняя. Работает как положено, но замедляет процесс. Просто так усложнять код я бы не стал. Проверено опытным путем на конкретном примере.
vamosss,
Забудьте про графы, они хороши если видео тянет на пару гигов макс.
Итак, обойдемся малым и приступим. Необходимо:
1. Matroska (Haali) splitter (это наличиствует)
2. Windows Media Player 11 или Windows Media Format Runtime 11 или Windows Media Format 11 SDK (неизвестно)
Действия:
1. Находим библиотеку из комплекта хаали avss.dll (простым поиском) и копируем ее в папку плагинов ависинта.
2. Конфигурируем ffdshow video decoder. Выбираем "Codecs" слева, а справа в столбце формат ищем VC-1 и в качестве декодера выбираем wmv9. Применить.
3. Пишем скрипт DSS2 (...\xxx.mkv, fps=29.97). Проверяем путем покадрового просмотра наличие дублированных кадров. Если таковые встречаются с завидным постоянством, то изменяем fps=23.976. Смотрим заново, если все ок, то так и оставляем. Далее в скрипт добавляете все, что угодно...
ЗЫ. Совсем забыл о ColorMatrix.... Добавьте строку ColorMatrix(interlaced=false, debug=true, threads=0). И скачайте программулину товарища Руссиновича - DebugView (бесплатная, гугл в помощь). Запустите DebugView и просмотрите несколько кадров. Затем загляните в окошко DebugView.
И вы увидите что к чему для правильного установления цветового формата.

Кстати, картинка получена из исходника VC-1 со скриптом аналогичным указанному выше.
[Профиль]  [ЛС] 

Tempter57

Старожил

Стаж: 17 лет 3 месяца

Сообщений: 5029

Tempter57 · 14-Окт-09 09:08 (спустя 29 мин., ред. 14-Окт-09 09:08)

Sergios666
В таком случае вам необходимо поставить function MDegrain2I до деинтерлейса, только расскажите мне смысл такого шумоподавления, если я могу подавить шум деинтерлейсного видео гораздо лучшими шумодавами. Вы же применили подавление шума чересстрочного источника функцией MDegrain2i2 с использованием опции planar для более быстрой обработки YUY2:
скрытый текст
function MDegrain2I(clip cl) {
fs=cl.Interleaved2Planar().SeparateFields() # преобразуем клип в планарный цветовой формат для быстрой обработки и разделяем обработку по полям
super=MSuper(fs, planar=true)
bv2=MAnalyse(super, isb = true, delta = 2, overlap=4)
fv2=MAnalyse(super, isb = false, delta = 2, overlap=4)
bv4=MAnalyse(super, isb = true, delta = 4, overlap=4)
fv4=MAnalyse(super, isb = false, delta = 4, overlap=4)
fs.MDegrain2(super, bv2, fv2, bv4, fv4, thSAD=800, planar=true) # thSAD можно увеличить или уменьшить в зависимости от количества артефактов после "жесткого" деинтерлейса
return Planar2Interleaved().Weave() # преобразуем обратно в обычный чередующийся цветовой формат YUY2 и берем пары полей из разделенного на поля обработанного видео клипа и комбинируем их вместе, чтобы сделать чересстрочные кадры.
}
Думаю по вашим рекомендациям для vamosss по кодированию VC-1 сейчас вмешается активно группа AVC, особенно по ColorMatrix, что собственно произошло уже и вчера.
Информация по колориметрии:
скрытый текст
Колориметрия- физическая наука о методах измерения и количественного выражения цвета, а также совокупность таких методов. В колориметрии (науке о цветах) цвет определяется тремя величинами: яркостью, цветовым тоном и насыщенностью.
ColorMatrix корректирует цвета потоков MPEG-2 DVD. Более корректно, многие MPEG-2 потоки используют слегка отличающиеся коэффициенты (называемые Rec.709) для хранения цветовой информации, чем это делают подпрограммы преобразования цвета AviSynth или XviD/DivX декодеры (называемые Rec.601), с тем результатом, что клипы DivX/XviD или MPEG-2, закодированные TMPGEnc/QuEnc отображатся со слегка смещенными цветами (что выглядит подобно небольщой разницы в яркости). Это может быть проверено путем открытия потока MPEG-2 прямо в VirtualDubMod.
Преобразования от RGB до YUV и наоборот есть многократные установки коэффициентов, которые могут использоваться. Самые общие - Rec.709, FCC, Rec.601(иначе SMPTE 170M или ITU-R BT.470-2), и SMPTE 240M. Цель ColorMatrix состоит в том, чтобы повторно вычислить значения видео YUV, которое было преобразовано из RGB. Причина этих преобразований полезна,поскольку потоки MPEG-2 типично используют Rec.709, тогда как большинство программного обеспечения (декодерыXviD/DivX, и т.д ...) принимают Rec.601.Для этих целей и служит ColorMatrix, чтобы преобразовать видео от Rec.709 до Rec.601 и затем передать это к декодеру. Другой пример - то, если Вы фиксируете видео с программным обеспечением, которое использует Rec.601 и затем хотите закодировать это к MPEG-2, используя кодирующие устройства, которое принимает Rec.709.
Помимо пребразований различных режимов ColorMatrix также имеет способность сделать расширение диапазона и сокращение ([16,235/240]-> [0,255] или [0,255]-> [16,235/240]), как часть преобразования колориметрии или самостоятельно
Синтаксис
ColorMatrix (clip, string "mode", int "source", int "dest", int "clamp", bool "interlaced", bool "inputFR", bool "outputFR", bool "hints", string "d2v", bool "debug", int "threads", int "thrdmthd", int "opt")
С подробным описанием параметров настроек ColorMatrix можно познакомится по адресу:
http://avisynth.org.ru/docs/russian/externalfilters/colormatrix.htm
Рекомендации tartak'а по колориметрии:
"clamp=0 всегда должно присутствовать. За сужение диапазона отвечает комбинация inputFR и outputFR, которые могут сузить диапазон, но не обрезают его, как делает clamp <> 0. При перекодировании с ДВД мы рассчитываем, что в оригинале уже был диапазон ТВ (впрочем, это всегда легко проверить) и просто ставим clamp=0, пропустив inputFR и outputFR. Тогда диапазон остается без изменений. При перекодировании с других источников (включая HD), где вполне может быть полный диапазон, мы ставим inputFR в соответствии с диапазоном источника (опуская outputFR, поскольку по умолчанию outputFR = false). Проверяем диапазон с помощью СolorYUV(analyze=true) по значениям Loose Min/Max.Эту строку можно открыть в пресете info:
ColorMatrix(mode="Rec.709->Rec.601", inputFR=false, clamp=0) #корректировка цветовой шкалы если проверка показывает 16-232
ColorMatrix(mode="Rec.709->Rec.601", inputFR=true, clamp=0) #корректировка цветовой шкалы если проверка показывает 0-255
Вывод: ColorMatrix(hints=true, interlaced=false/true, threads=0, clamp=0) является почти лучшим вариантом при перекодировании DVD в XviD/DivX. Колориметрия будет преобразована из того, что DGIndex обнаружит в DVD (по умолчанию это 601, но может быть и SMPTE 240M и даже 709), в 601-ю. Диапазон останется без изменений.
Здесь явно предполагается, что мы будем скармливать XviD цветовому пространству YV12 (скажем, с Fast recompress в VD). Что неплохо, просто надо помнить, что интерлейсный YV12 фундаментально дефективен, и проблемы с хромой неизбежны не только при преобразовании YV12 -> YUY2, но и при вычислениях в ColorMatrix.
С этой точки зрения, я бы все-таки скармливал кодировщику YUY2, но делал преобразование не с ConvertToYUY2, а AutoYUY2. AutoYUY2 - единственный известный мне способ хорошей обработки интерлейсного YV12. В этом случае interlaced=false/true следует просто выкинуть из ColorMatrix. Но поскольку AutoYUY2 будет стоять перед ColorMatrix, то hints перестанут работать. Тут уже надо использовать либо опцию d2v, либо явно задавать колориметрию источника.
Перекодирование из HD в DVD еще интересней с точки зрения колориметрии. Я предложил мои соображения здесь:
ColorMatrix(mode="Rec.709->Rec.601", clamp=0) - с clamp=0 полностью согласен, но тогда надо выяснить диапазон на входе, с помощью coloryuv(analyze=true). Казалось бы, раз на выходе должно быть 16-235, то зачем clamp=0, который запретит сужение диапазона (в старых версиях ColorMatrix диапазон сужался всегда)? Дело в том, что DVD сплошь и рядом смотрят на HDTV. Хорошие железные плееры пропускают суперчерный/супербелый к апскейлеру, который использует эту информацию в тенях и ярких местах во избежание полос. Но базовый диапазон - по-прежнему 16-235. То есть inputFR=true/false обязателен при clamp=0 - тогда мы получим и правильный общий диапазон на выходе (16-235) и выбросы в суперчерный/супербелый. inputFR=false ставим, если на входе имеем 16-235, но с выбросами в суперчерный/супербелый. Поскольку получается inputFR = outputFR (по умолчанию outputFR=false и мы его просто не ставим), то диапазон вообще не будет затронут. Если на входе 0-255, то ставим inputFR=true, и диапазон сожмется как надо (за счет того же outputFR=false по умолчанию). Если неохота морочить себе голову с проверкой диапазона на входе, тогда лучше clamp убрать (по умолчанию, clamp = 1)
Обрезать диапазон плохо, поскольку точки вне законного ТВ диапазона на DVD в самом деле встречаются. И дело не только в артефактах кодирования. Так называемые суперчерный и супербелый встречаются в глубоких тенях и ярких участках, с целью уменьшить образование полос. При тестировании железных DVD плееров, их способность пропускать такие цвета является одним из критериев качества. Именно поэтому тестировать диапазон следует по Loose Min/Max, а не просто Min/Max. Loose Min/Max показывает диапазон с исключенными редкими выбросами."
Вот ещё мнение shellgen по этому вопросу:
"Cлучай необходимости применения colormatrix() может возникнуть тогда и только тогда когда исходный сигнал = DVD Video, а на выходе надо получить строго 601. MPEG2 на синих дисках и HDTV трансляциях по православным канонам должен быть оцифрован под 709. Впрочем точность цветов и спутниковый MPEG2 рядом всё равно не живут, там изначально проблемы поглобальнее.
Большая часть всякого там разного оборудования и православных примитивных декодеров при конверте полученного от декодера yuv сигнала настроено на 709, т.к. 601е коэффициенты в оцифровке HD сигнала вероятно вообще не используют, а на SD сигнал DVD происхождения перекодированный в MPEG4/Part10 они рассчитаны изначально конечно не были. ))
Остаётся некоторое количество декодеров, которые в определении коэффициентов апконверта пытаются сделать интеллектуальное заключение, некоторые на основе разрешения, в том числе грешат этим всякие там рендеры производства M$. Остаётся только надеятся что таких будет всё меньше и меньше, а отстранить рендеры и прочее от апконверта в RGB достаточно просто и даже предпочтительно, чтобы избежать сюрпризов. Стандартом предусмотрено указание колоритмии в заголовке потока, если стандарту кто-то не следует, то пускай это будет на их совести :Р
Что касается точного определения коэффициентов оцифровки исходного сигнала, то имеющаяся информация о колоритмии даже на DVD мягко говоря противоречива, в такой ситуации не вижу ничего лучше кроме как верить отцам:
colormatrix.htm писал(а):
Newer versions of DGIndex (v1.20+) write the colorimetry information into the d2v project file. ColorMatrix is able to parse the d2v file and automatically determine the source coefficients from that information.
...
How do you know which set of coefficients were used when encoding a MPEG-2 stream? Usually, the coefficient information is stored in the header of the MPEG-2 file (the "matrix_coefficients" field in the "sequence display extension"). Newer versions of GSpot will be able to read and display this information. Also, DGDecode v1.20+ (with Mpeg2source(info=1)) can be used to view it. If this extension field is not present in the header of the MPEG-2 file, the specs say we are supposed to assume the default of Rec.709Т.е. чтобы определить колоритмию исходника согласно Д.Графту, достаточно заглянуть в коэффициенты всплывающие в .d2v после индексации потока.
И последний нюанс состоит в том, что если DGIndex ещё есть какие-то основания верить, то конторкам, которые порой штампуют непонятно чем непонятно и на чём несчастные DVD диски, верить исключительно сложно. Методы телесина , интерлейса а также происхождении AR в MPEG2 потоках на некоторых DVD не перестают поражать воображение, что уж там говорить о колоритмии."
При кодировании х264 лучше в скрипте вообще не вписывать colormatrix, а непосредственно вписывать в командную линию показания колориметрии, которую показывает DGIndex, например:
--colormatrix "bt470bg"
или для BDRip показания DGAVCIndex или DGVC1IndexNV
--colormatrix "bt709"
[Профиль]  [ЛС] 

vladimiryakushin

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

Сообщений: 3171

vladimiryakushin · 14-Окт-09 09:20 (спустя 11 мин.)

Tempter57 писал(а):
Думаю по вашим рекомендациям для vamosss по кодированию VC-1 сейчас вмешается активно группа AVC, особенно по ColorMatrix, что собственно произошло уже и вчера.
Да, собственно, все уже сказано:
Tempter57 писал(а):
shellgen писал(а):
При кодировании х264 лучше в скрипте вообще не вписывать colormatrix, а непосредственно вписывать в командную линию показания колориметрии, которую показывает DGIndex, например:
--colormatrix "bt470bg"
или для BDRip показания DGAVCIndex или DGVC1IndexNV
--colormatrix "bt709"
[Профиль]  [ЛС] 

Sergios666

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

Сообщений: 16


Sergios666 · 14-Окт-09 09:37 (спустя 17 мин., ред. 14-Окт-09 09:37)

Tempter57
Да что вы прицепились к предлагаемой функции. Ну да черт с этим.
По поводу колорматрикс. Я описал способ получения информации о колориметрии источника и действиях функции при дефолтных настройках. Это ни в коей мере не могло и не может быть рассмотрено как применение функции c вышеуказанными аргументами для кодирования. Не зря же я выделил полужирным шрифтом debug.
Надеюсь перепалки закончены.
vladimiryakushin
Ну нет у человека карты NVIDIA. Какие к черту DGVC1IndexNV...
[Профиль]  [ЛС] 

Tempter57

Старожил

Стаж: 17 лет 3 месяца

Сообщений: 5029

Tempter57 · 14-Окт-09 09:48 (спустя 10 мин.)

vamosss
Руководство по кодированию видео из HD-DVD в x264 с применением GraphEdit
[Профиль]  [ЛС] 

_Woland_

Стаж: 17 лет

Сообщений: 1067

_Woland_ · 14-Окт-09 09:49 (спустя 1 мин.)

Sergios666
Выдает ошибку, что не знает функции Interleaved2Planar. Из всех подключаемых библиотек нет только SSE3Tools.dll - и никак не получается её найти в сети.
[Профиль]  [ЛС] 

Sergios666

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

Сообщений: 16


Sergios666 · 14-Окт-09 09:53 (спустя 4 мин., ред. 14-Окт-09 09:53)

_Woland_
Хттп ссылку посмотрите в комментах скрипта. RemoveGrain идет вместе с SSETools.
[Профиль]  [ЛС] 

vladimiryakushin

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

Сообщений: 3171

vladimiryakushin · 14-Окт-09 09:59 (спустя 5 мин., ред. 14-Окт-09 10:01)

Sergios666 писал(а):
Ну нет у человека карты NVIDIA. Какие к черту DGVC1IndexNV...
vladimiryakushin писал(а):
При исходнике .vc1
Если видеокарта NVIDIA, то индексировать видео с помощью dgvc1decnv
Полученный файл *.dgv загружать:
vc1source(".....................................dgv")
Если карта не NVIDIA, то построить граф и полученный файл загружать:
directshowsource("...........................grf",video=true,audio=false,fps=23.976,convertfps=false)
[Профиль]  [ЛС] 
 
Тема закрыта
Loading...
Error