Сайт | Пользователи | Кто в онлайне? | Поиск
AKPOCC Форум » ОСНОВНЫЕ ФОРУМЫ » ТЕХНИЧЕСКАЯ ЧАСТЬ » Многопроходное кодирование
 Логин
 Пароль
 Регистрация :: Забыли пароль?
Единственная страница темы ответить новая тема новое голосование
 Тема: Многопроходное кодирование (1 pass, 2 pass, ... N pass?)« Предыдущая тема | Следующая тема » 
Esc 
почётный пенсионер
 Сообщений: 11393
 Автор АКРОССа
 
Профиль Личные сообщения Сайт ICQ   ЦИТАТА
Дошли до меня сведения о путанице с многопроходным кодированием кодеком x264. Поэтому мы тут запишем правильный сценарий с кратким объяснением основ многопроходного кодирования.

При кодировании клипа. А точнее, при работе кодека могут выполняться 2 операции: 1) сбор статистики относительно сложности видеопотока и 2) собственно создание закодированного изображения.

Почему однопроходном кодировании ничего хорошего не получается? Потому что у кодека нет информации о том, что его ждёт в будущем. Он видит только крайне небольшое количество кадров вокруг текущего. И поэтому у него есть только 2 варианта:
1) Либо работать на заданный объем, и тогда битрейт будет практически постоянный с небольшими вариациями.
2) Либо придерживаться постоянного качества изображения, и тогда конечный объем файла непредсказуем.
Эти две опции реализованы, например, в DivX под названиями 1-pass и 1-pass quality based.

Многопроходное кодирование даёт возможность разделить этапы сбора статистики и генерации закодированного изображения.

1-й проход - это всегда чистый сбор статистики. И о чём не все задумываются, пишется эта статистика конечно не в ваш avi, а в отдельный файл статистики. DivX 5 позволял управлять этим файлом. В 6-й версии оставили лишь настройку директории для него, да и ту засунули так глубоко, что не всякий дотянется. В VP6 и VP7 есть отдельная установка для First Pass File на последней закладке. В командной строке x264 данный файл задаётся параметром --stats.

Что такое вообще есть сбор статистики? Доходили до меня слухи, что в пятом DivX-к это было ни что иное, как имитация кодирования с постоянным квантайзером (=2). Поэтому в нём спокойно можно было заменить первый проход на quality based 1-pass with q=2, что некоторые гуру даже советовали делать. После чего кодеку остаётся лишь присвоить каждому кадру индекс сложности в соответствии с полученным при постоянном квантайзере теоретическим объёмом и выделить битрейт пропорционально этому индексу.

Поскольку всем понятно, что при многопроходном кодировании нет никакого смысла останавливаться после первого прохода, в сам файл ави не пишется ничего. Что до смерти пугает некоторых нубов, обнаруживающих в своём файле после первого прохода лишь чёрный экран. Если там после первого прохода чёрный экран, думают они, что же будет после второго? Им настолько страшно узнать ответ, что они иногда даже бросают саму идею многопроходного кодирования и уходят в леса жить с волками и питаться мухоморами.

При простом сценарии, которого твёрдо придерживаются кодеки семейства VP, за первым следует второй проход, который собственно и раздаёт битрейт в соответствии с полученной раскладкой. Конец кодирования и все счастливы. Но этот подход совершенно не устраивает перфекционистов, которым подавай исключительно самое лучшее, даже если это займёт в несколько раз больше времени. Их аргументация такова, что при реальном кодировании с индивидуальными параметрами квантайзеров на каждом кадре сложность кадров замеряется уже более точно. Что позволяет при следующем проходе ещё точнее и правильнее распределить битрейт между сценами.

DivX давно и плотно придерживается технологии многопроходного кодирования. Поэтому у него есть 1st pass и Nth pass. Разница в том, что при первом проходе пишется только файл статистики, а при энном - и изображение пишется и файл статистики новыми значениями обновляется. Теоретически, при последнем проходе файл статистики уже не нужен. Поэтому раньше его можно было отключить. Но потом программеры осознали, что собственно по сравнению с кодированием запись файла статистики отнимает так ничтожно мало времени и занимает так мало места на диске, что выигрыш от его включения-выключения просто не стоит той путаницы, которую можно получить, забыв включить его обратно.

Другие кодеки, такие как XviD и x264, пытались подобно VPx топырить пальцы и заявлять, что уж у них-то первый проход настолько хорош и продвинут, что больше 2 проходов никогда не понадобится. Но у них не хватило духу гнуть эту линию до победного конца. Недовольные перфекционисты побеждали, и вводилась возможность кодирования в более чем 2 прохода.

В частности, в случае x264 это вылилось в довольно неприятную путаницу. Опция --pass 2 подразумевает второй и последний проход, при котором файл статистики не обновляется. Позднее была добавлена опция --pass 3, которая во всём аналогична --pass 2, за тем исключением, что она таки обновляет файл статистики. Поэтому если ты собираешься всегда использовать только 2 прохода, можно их вызывать так:
1) --pass 1
2) --pass 2
Но если планируется больше двух проходов, рекомендуется забыть нафиг про pass 2 и вызывать кодек так:
1) --pass 1
2) --pass 3
....
N) --pass 3.
Теоретически, последний проход может быть pass 2. Но практически, как я уже говорил, выигрыш минимальный, а шансы запутаться существеннно возрастают.


Исправил(а): Esc, 20 августа 2007, 21:31

--------------
Реальность отличается высокой скоростью рендеринга и отсутствием сюжета.
Отправлено: 20 августа 2007, 21:24 | Зарегистрирован: 17 марта 2003
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
Esc
Вот-вот. Среднестатистический человек, кодит себе 1, 2, 3 проход в x264 и не подозревает, что кодит на самом деле в 2 прохода. (Хотя потеря, за исключением потраченного времени не смертельна) Я тоже привык, что у Дивикса по-порядку все и даже не задумывался о возможности таких выбрыков x264-го энкодера. Хорошо что разобрались перед тем, как нубам проги для кодинга в АВЦ делать  :tongue:
Отправлено: 20 августа 2007, 21:38 | Зарегистрирован: 24 декабря 2006
Esc 
почётный пенсионер
 Сообщений: 11393
 Автор АКРОССа
 
Профиль Личные сообщения Сайт ICQ   ЦИТАТА
Кстати, Nero AVC тоже не балует многопроходностью. Это только с фанскими кодеками семейста Х возможна демократия.

--------------
Реальность отличается высокой скоростью рендеринга и отсутствием сюжета.
Отправлено: 20 августа 2007, 21:53 | Зарегистрирован: 17 марта 2003
Aggressor 
ecchi
 Сообщений: 4428
 Автор АКРОССа
 
Профиль Личные сообщения Сайт   ЦИТАТА
Цитата (Esc @ 20 августа 2007, 20:24)
И о чём не все задумываются, пишется эта статистика конечно не в ваш avi, а в отдельный файл статистики

Не совсем правильно. Справедливо только для режима "турбо", иначе же создается полноценный файл avi.
Цитата (Esc @ 20 августа 2007, 20:24)
Теоретически, последний проход может быть pass 2. Но практически, как я уже говорил, выигрыш минимальный, а шансы запутаться существеннно возрастают.

А я вот на глаз сверял цветопередачу, и видел разницу. Не такой уж минимальный выигрыш, будем реалистами. При битрейте "впритык" выигрыш заметен на глаз, не надо даже присматриваться. А время... что клипмейкеру каких-то лишних 45 минут, если речь идет о качестве?
Отправлено: 21 августа 2007, 02:10 | Зарегистрирован: 14 декабря 2006
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
Цитата (Aggressor @ 21 августа 2007, 01:10)
При битрейте "впритык" выигрыш заметен на глаз, не надо даже присматриваться. А время... что клипмейкеру каких-то лишних 45 минут, если речь идет о качестве?


А мне кажется Эск не про уместность 3го прохода говорил, а про то, что третим по счету лучше использовать --pass3 вместо --pass2
Отправлено: 21 августа 2007, 02:24 | Зарегистрирован: 24 декабря 2006
Aggressor 
ecchi
 Сообщений: 4428
 Автор АКРОССа
 
Профиль Личные сообщения Сайт   ЦИТАТА
Цитата (Endymion @ 21 августа 2007, 01:24)
А мне кажется Эск не про уместность 3го прохода говорил, а про то, что третим по счету лучше использовать --pass3 вместо --pass2

Цитата (Esc @ 20 августа 2007, 20:24)
Но если планируется больше двух проходов, рекомендуется забыть нафиг про pass 2 и вызывать кодек так:
1) --pass 1
2) --pass 3
....
N) --pass 3.

Я бы сказал, что Эск рекомендует использовать --pass 3 не только третьим по счету, но и вторым. Что есть странно, поскольку в MeGUI при использовании пресета трехпроходного кодирования второй проход идет как раз как --pass 2, а третий уже как --pass 3.
Отправлено: 21 августа 2007, 09:51 | Зарегистрирован: 14 декабря 2006
Endymion 
Ginryuu
 Сообщений: 2155
 Посетитель
 
Профиль Личные сообщения  ЦИТАТА
Aggressor
Да мы вчера разобрались. Все правильно. Чтобы кодить в 3 прохода, надо писать или --pass 1, 3, 3 или -pass 1, 3, 2


Исправил(а): Endymion, 21 августа 2007, 10:54
Отправлено: 21 августа 2007, 10:50 | Зарегистрирован: 24 декабря 2006
Esc 
почётный пенсионер
 Сообщений: 11393
 Автор АКРОССа
 
Профиль Личные сообщения Сайт ICQ   ЦИТАТА
Aggressor
Проверил трёхпроходное кодирование в MeGUI 0.2.5.1007. Делает проходы 1, 3, 3. Так что либо ты не туда смотришь, либо у тебя древняя версия с ошибкой.


--------------
Реальность отличается высокой скоростью рендеринга и отсутствием сюжета.
Отправлено: 21 августа 2007, 16:15 | Зарегистрирован: 17 марта 2003
zzerg 
 Сообщений: 682
 Начинающий автор
 
Смотрит:
Dexter
Слушает:
Укоры совести
Профиль Личные сообщения ICQ   ЦИТАТА
Цитата (Aggressor @ 21 августа 2007, 07:51)
[quote=Endymion,21 августа 2007, 01:24]Я бы сказал, что Эск рекомендует использовать --pass 3 не только третьим по счету, но и вторым. Что есть странно, поскольку в MeGUI при использовании пресета трехпроходного кодирования второй проход идет как раз как --pass 2, а третий уже как --pass 3.

Это как раз критически важно -- НЕ использовать "-pass 2" для любых "непоследних" проходов. И даже для последнего можно использовать "-pass 3".

Походу, если MeGUI делает так, то он неправ, и это баг. Кстати, этот баг вроде бы был и в других гуях (например, в StarRix, или как там его). О, Эск говорит, что всё ок с Мегуй :)

Это ещё раз подтвержает мысль, что GUI пока ещё не дописаны и не отлажены до совершенства :(


--------------
Главное не победа. Главное -- призы!
Отправлено: 21 августа 2007, 16:46 | Зарегистрирован: 17 октября 2006
Aggressor 
ecchi
 Сообщений: 4428
 Автор АКРОССа
 
Профиль Личные сообщения Сайт   ЦИТАТА
Esc, скорее, древняя версия.
Спасибо за инфу! Вечером перекомпилю свою ГУИ. Правда, последний (третий) проход намереваюсь обозначить "2", чтобы не делать лишних движений по поводу лишней записи в файл статистики.
Отправлено: 21 августа 2007, 18:03 | Зарегистрирован: 14 декабря 2006
 9 ответов после 20 августа 2007, 21:24 « Предыдущая тема | Следующая тема » 
  [ Подписаться на тему :: Отправить тему на email :: Версия для принтера ]ответить новая тема новое голосование  
  Единственная страница темы
AKPOCC Форум » ОСНОВНЫЕ ФОРУМЫ » ТЕХНИЧЕСКАЯ ЧАСТЬ » Многопроходное кодирование


Рейтинг@Mail.ru   Rambler's Top100     Яндекс.Метрика