СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H 1pass vs 2pass (and more) в черновиках Из песочницы

Допустим, вы решили закодировать своё хоум видео (не от алкоголизма, а в h264). И энкодер просит выбрать количество пассов (pass). Давайте разберёмся, что эти пассы из себя представляют.

Немного о терминологии, необходимой для понимания темы. Пасс — в данном случае «проход». Энкодер спрашивает, за сколько проходов видео будет кодироваться. Битрейт — количество памяти, затраченной для хранения секунды видео. CBR (constant bitrate) — постоянный битрейт. VBR (variable bitrate) — переменный битрейт.

1 pass — видео кодируется на «лету». Быстро и сердито. Плюсы режима: это единственный возможный вариант кодирования live-стриминга. Без затрат времени на дополнительный анализ файла. В этом режиме энкодер тратит одинаковое количество бит на хранение каждой секунды видео.

2 pass — кодирование производится в два этапа. Первый проход — анализирует видео. Миссия первопроходца — оставить заметки в своем бортовом журнале, прикинуть, сколько бит имеет смысл потратить на каждый кадр. Например, для качественного хранения статичного кадра с «Полностью Чёрным Квадратом» Казимира Малевича необходимо меньше бит, чем для пёстрого, динамичного кадра с нового клипа PSY. Целью первопроходимца как раз и является задача обнаружить и порешать. А уже второй проход, следуя подсказкам первого, делает конечный файл. Логично, что этот режим эффективен только при VBR. Время на кодировку видео при этом режиме увеличивается вдвое.

3 and more pass — все то же, что и при двухпроходном режиме, только каждый дополнительный проход производит более тщательный анализ. А последний проход всегда отвечает за производство файла.

Поговаривают, что один проход вытягивает лишь 60% потенциального качества результирующего видео. При двух проходах можно вытянуть 90% потенциального качества, а при трех — 98%. Я лично не придумал как проверить эти цифры. На самом деле, «набитый глаз» без труда заметит превосходство двухпроходного кодирования над однопроходным при аналогичном битрейте.

комментарии (13)

+3
Maxikkk19 ,  
Эм… Что это? Для кого это? Зачем это тут? Макротвит того, что и так понятно всем кто даже издалека знаком с работой с видео.
–1
danyvin ,  
Эта информация собранная из различных источников была полезна для меня, например. Хотя работаю не издали с видео не первый год. Допустил мысль, что будет полезна еще кому нибудь в российском интернете. В чистом виде ничего подобного на русском не нашел когда искал. И верно, статья несет ознакомительный характер, если необходимо — будет еще одна, углубленная, так сказать.
+1
Maxikkk19 ,  
С нее и следовало начинать, а данное выше сделать предисловием.
0
danyvin ,  
Обязательно учту это в следующих публикациях, если они будут.
+1
Evengard ,  
Я думал тут расскажут хотя бы о том, зачем всё ж нужно больше двух проходов, а тут кроме зыбких «90%» и «98% потенциального максимального качества» ничего и нету…
0
danyvin ,  
Сожалею, что разочаровал. Допустил мысль, что определенной категории посетителей хабра статья может быть полезна даже в таком, ознакомительном варианте. Ибо сам потратил некоторое время на поиск этой информации, которой нет в чистом виде на могучем российском.
+2
Maxikkk19 ,  
До этой информации чуть ли не простой логикой можно дойти, да и большинство тут все таки владеют могучим английским.
+1
saboteur_kiev ,  
Разница в CBR и VBR есть не только в видео, но и в аудио.

Можно было бы хотя бы добавить, что некоторые древние проигрыватели могут не шарить что такое VBR, и не проигрывать музыку/видео, сжатую в два+ проходов (больше относится к древним mp3 автомагнитолам)

Но да, в данной статье тема вообще не раскрыта.
+1
danyvin ,  
Да, вы правы. Спасибо за комментарий. Надо было глубже копнуть. Просто мне именно в таком объеме информация была необходима, допустил мысль, что я не один такой. За аудио — речь была именно о видеопотоке, и акцент именно на многопроходности. Так было задумано. :)
0
saboteur_kiev ,   * (был изменён)
В аудио дела обстоят почти также. В смысле разные подходы по отбору того, что и как можно сжать (посчитать лишним), но в плане многопроходного сжатия — все тоже самое.

Казалось бы — больше анализа, лучше распределение, но…

В свое время было потречено туча часов на кодировку, после чего я пришел к выводу, что при рипе фильмов, 3 прохода еще дают некоторый хоть и труднозаметный но прирост к качеству по сравнению с двумя проходами.
Четыре и больше — практически не дают, и даже наоборот — в статичных сценах могут появляться артефакты.

Для домашнего видео — двух проходов выше крыши (чисто чтобы был VBR а не CBR)

С тех пор, как сжатие видео перестало быть ограниченным размерами CD (700 mb), гораздо выгоднее поставить чуть выше средний битрейт, чем мучаться с дополнительными проходами.
0
danyvin ,  
Согласен про три и более прохода. Но двумя — пользуюсь активно, когда есть лишнее время на рендеринг. Если исходник качественный — даёт заметно положительный результат.

Про аудио — даже странно, что не встречал (не замечал) раньше многопроходного сжатия, спасибо за наводку. Обязательно ознакомлюсь с темой.
0
AterCattus ,  
Давайте хоть немного дополню этот «Макротвит» примером из закрамов.
Качество в 1 и в 2 прохода при прочих равных
image
image
0
danyvin ,  
Просто замечательно. В примере — вся суть статьи :).