1. Один из старейших русских кланов Black Heaven, inc объявляет набор бойцов в ArcheAge. Зарегистрируйтесь и подайте заявку.

Учимся делать качественное видео для видеохостингов

Тема в разделе "Трактиръ", создана пользователем Kulala, 12 апр 2014.

  1. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Постараюсь тут набросать мануал по видеокодингу игрового видео для заливки на ютуб.

    Кто все понял может дальше не читать ))



    • Для начала установите все эти программы, а так же набор кодеков K-Lite.



    • Перед непосредственно кодингом самое главное - это сделать качественный источник.
      Вариантов миллион, но самые лучшие - это запись в lossless качестве. Их и обсудим.

    1. Fraps
    Фрапс пишет только в lossless качестве, но есть тонкость - цветовая субдискретизация или в более широком понятии Color space.
    Нас интересуют только 2 настройки.
    Показать
    [​IMG]

    Force lossless RGB capture заставляет писать в цветовом пространстве RGB, если галочка не стоит то в YUV.
    30 fps - frame rate.
    2. Bandicam
    Показать
    [​IMG]




    • Теперь нужно пережать полученное видео для хранения и заливки на видеохостинги.
    Для хранения достаточно пережать в Avisynth > MeGui.
    Но если вы хотите сделать ролик в Sony Vegas, то следует поступать следующим образом:

    Sony Vegas > Debugmode > Avisynth > MeGui
    1. Собрать проект.
    2. Настройка Sony Vegas:
    Показать
    [​IMG]

    3. Жмем Render As.
    4.
    Показать
    [​IMG]

    5.
    Показать
    [​IMG]

    RGB32 - цветовое пространство, для нашего случая можно брать и RGB24, не принципиально.
    Write audio - подхват аудио дорожки (в lossless качестве).
    6. В следующем окне показано куда сохранился так называемый signpost AVI файл.
    Показать
    [​IMG]

    не закрываем это окно.
    7. Создаем текстовый файл с разрешением .avs со следующим содержанием:
    Код:
    AVISource("E:\Fraps\Render\Untitled.avi")
    ConvertToYV12()
    Файл назовем, скажем, 222.
    Очевидно, что в кавычках путь к вашему видео, а точнее к его signpost AVI файлу.

    Либо создаем файл со следующим содержанием, если вы хотите сделать апскейл.
    Код:
    AVISource("E:\Fraps\Render\Untitled.avi"
    Spline64Resize(3840,2160)
    ConvertToYV12()
    Вместо Spline64Resize можно использовать другие методы ресайза, например BlackmanResize и LanczosResize, на мой взгляд эти три метода дают наиболее хорошие результаты для ютуба, причем первый больше всего похож на оригинал, но чуть замылен, а вторые более резки, но дальше от оригинала.
    Цифры для ресайза приведены следующие 1920*2х1080*2, т.е.разрешение видео умножаем на два.
    8. Запускаем MeGui
    Показать
    [​IMG]

    В AviSinth Script вставляем наш только что созданный текстовый файл.
    Выбираем Encoder Settings х264 для видео и Lame MP3 для аудио.
    File format - MP4.
    Настраиваем x264 кодек:
    Показать
    [​IMG]

    Настраиваем Lame MP3 кодек:
    Показать
    [​IMG]

    После кодирования у нас должно получиться 2 файла - 222.mp4 с видео дорожкой и 222.mp3 с аудио дорожкой.
    Нужно их смиксовать в один файл.
    Показать
    [​IMG]

    Показать
    [​IMG]

    Убедитесь что fps соответствует fps источника, в нашем случае 30 fps.
    В противном случае смотрите выше, что вы сделали не так.



    Мануал кажется огромным, однако, когда у вас уже все настроено, запустить кодироваться видео - это дело пары минут.



    F.A.Q.

    Показать

    q. Зачем снимать в lossless качестве?
    a. Если брать только качество и не учитывать такие факторы как нагрузка на процессор, объемы данных и т.д., то лучше всего работать с оригинальным изображением и только один раз пережимать в конце.
    Конечно сейчас есть неплохие аппаратно-программные средства снимающие не в lossless, например cuda и shadowplay. 99% юзеров устраивает их качество, остальным курить мой мануал.

    q. Тогда почему же мы пережимаем 2 раза?
    a. Действительно мы пережимаем кодеком х264, и потом еще раз, когда заливаем на youtube. Но если вы сразу будете заливать на ютуб в лосслес качестве, то это займет гораздо больше времени, к тому же результат может быть даже хуже, чем после нашего кодирования, как это не парадоксально. Сложно дать этому объяснение, не зная алгоритмов работы ютуба. Но практика показывает, что это так.
    К тому же пересжатые видео удобно хранить на жестких дисках.

    q. Почему 30 fps а не, скажем, 60?
    a. Для игрового видео действительно лучше брать 60 fps, но если заливать на видеохостинг, вы получите тот же битрейт что и для 30 fps, но он будет на вдвое большее количество кадров, следовательно качество каждого кадра пострадает.

    q. Что такое апскейл?
    a. Upscaling - процесс повышения разрешения и качества цифрового изображения или видео.
    В нашем случае мы увеличиваем картинку в 2 раза (цифры приведены для разрешения 1920х1080), при заливке на ютуб качество видео будет доступно в качестве 4к и ютуб выделяет значительно больше битрейта на такое видео. Делать его или нет, решать вам.

    q. Что там с цветовой субдискретизацией, зачем оно вообще нужно?
    a. Тема сложная и больная для игрового видео, в двух словах не описать, но я попробую.
    Для начала конечно стоит ознакомиться с основами: цветовая субдискретизация и Color space.
    Если пытаться объяснить совсем по простому, то грубо говоря самая левая картинка 4:4:4 это наш оригинал, а самая правая 4:2:0 - это то, что мы получаем на ютубе, как не крути.
    Показать
    [​IMG]
    [​IMG]

    Особенно это критично для игрового видео, где обычно много надписей состоящих из нескольких пикселей, как, например, ники персонажей.
    Идея мануала состоит в том чтобы работать с оригинальным изображением до самого момента пересжатия. А оригинальное игровое видео отображается в цветовом пространстве RGB. Так же редполагается, что далее вы будете работать в Sony Vegas, а он то же работает в пространстве RGB.
    К тому же важно не переходить в другое цветовое пространство и не понижать субдискретизацию до апскейла.
    Почему, наглядно можно посмотреть на следующем примере:
    Показать
    Берем 8 пикселей сохраняем в png
    [​IMG]
    Сохраняем их же в jpg, суб-ция 4:2:0, такая же как на ютубе, такая же как YV12.
    [​IMG]
    Берем 8 пикселей в png и сделаем билинейный апскейл в 2 раза.
    [​IMG]
    Берем эти 32 пикселя и сохраняем их в jpg.
    [​IMG]
    Теперь берем 8 пикселей в jpg и делаем апскейл в 2 раза.
    [​IMG]
    Теперь берем 32 пикселя апскейлутных будучи в RGB пространстве и сохраненных в YV12, и делаем обратный ресайз тем же методом.
    [​IMG]
    Тоже делаем для 32 пикселей апскейлутных уже после перевода в YV12
    [​IMG]
    Все изображения для удобства были увеличены на 3200%, заскринены и сохранены в png.

    Таким образом мы получаем:
    Оригинал [​IMG] апскейлим, переводим в YV12 и ресайзим назад, получаем: [​IMG]
    Оригинал [​IMG] переводим в YV12, апскейлим и ресайзим назад, получаем: [​IMG]

    Опыт можете повторить сами, цвета я брал следующие:
    первая строчка слева-направо: RGB FF00FF 00FF00 FFFF00 FF0080
    вторая строчка слева-направо: RGB 0000FF 00FFFF FF8000 FF0000.

    На самом деле на больших картинках результат не на столько заметен на глаз, но разница есть.

    q. Почему именно такие настройки кодека?
    a. Я старался подобрать настройки так, что бы быть ближе всего к оригиналу на выходе при меньшем битрейте. Критику от гуру приемлю. ))
    Последнее редактирование: 31 май 2014
    IVN, BoBko, Jeton и 2 другим нравится это.
  2. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Ну ролики я не делаю, а примеры может сделаю, если не в падлу будет.
  3. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Я и говорю про пример, сделать его дело не долгое.
  4. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Просто смысла нету в примере без сравнения. Нужно чтобы вы по своему зажали тот же кусок.
  5. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Есть смысл посмотреть о чем вообще идет речь )
  6. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Ахаха, ладно что нибудь вырежу, только нужен в идеале динамичный морской бой.
  7. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Можешь тот же северный заснять в землях покоя. Там битрейт расходуется только в путь.
  8. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
  9. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    И чем это видео лучше 100500 других, которые делаются по цепочке shadowplay -> Vegas -> youtube
  10. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Я тебе говорил Блид, все познается в сравнении.
    На мой взгляд здесь качество гораздо лучше чем в том видео, где ты прыгаешь режишь нубов на ЗБТ.
    Хочешь доказать обратное, сними 2 небольших куска видео одновременно шадоуплеем и фрапсом, и зажми из шадоуплэя по свойму, а мне пришли фрапс.
  11. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Даже если какая-то разница есть, то она в цветах, на которые плевать 99% смотрящих. Так же как плевать на разницу в цветах между обычным монитором за 6-10 т.р. и профессиональным за 100500, обычному юзверю, которому монитор нужен для игр и интернета\фильмов, а не для работы.
    Хотя даже по этому пункту у меня сомнения, т.к. это в любом случае youtube со своим 264 и 4:2:2.

    Не вижу ни одной веской причины юзать фрапс, жрущий ЦП и просаживающий fps, при этом без функции фоновой записи и с файлами по 4 гб за минуту, в то время как есть шадоуплей, лишенный этих проблем.
  12. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Из пустого в порожнее. Разница не даже, а есть. То что 99% на это плевать, я знаю. Но мне например не плевать и комуто наверное тоже, так что читаем название темы и учимся )) Я кстати в этом видео накосячил с апскейлом, сделал его уже после перевода в yv12, вечером поправлю.
  13. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Красный в RGB не останется красным после кодирования 264, он будет морковным (на примере AION). Четко по твоему гайду.
    В чем там разница, которая имеет смысл, при таких раскладах, я хз.
  14. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Разница в пикселях, там не только цвет смешивается, но идет подмена пикселей для упрощения цветовой модели, если ты делаешь апскейл до, то ты делаешь апскейл правильной картинки. А если после, у тебя уже картинка с измененными пикселями, смотри выше я выкладывал примеры.
  15. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Какое это все имеет значение, если ты один хрен теряешь информацию, т.к. вместо 4:4:4 исходника у тебя 4:2:2 на выходе ?)
  16. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Я хз как тебе еще объяснить очевидные вещи.
  17. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Очевидно что вся канитель с RGB в том, что у RGB нет субдискретизации (4:4:4) и красный цвет (на примере ников в AION) там действительно красный. А 264 подразумевает 4:2:2, т.е. неизбежную потерю. И красный цвет ников там становится марковным. Как не старайся - он не будет красным как в источнике.

    [​IMG]

    У h.264 есть профайл Hi444PP, уже давно, он умеет делать 4:4:4 и в случае с ним есть смысл том, что у тебя написано. Но как я понимаю - по сей день сей формат особой поддержки не получил. А говоря про youtube - это вообще забей.
  18. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Т.е в 4:2:2 Не существует красного цвета? Ок ))
  19. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Т.е. в 4:2:2 аионовский красный при любых раскладах становился морковным и плохочитаемым. Это были ники главным образом.
    Все помнят кто играл и видео смотрели я думаю.

    В случае с АА вообще по моему ничто не страдает на таком же уровне, поэтому к чему заморочки мне не понятно.
  20. Firz
    Offline

    Firz

    Сообщения:
    549
    Симпатии:
    0
    //Мимо проходя.
    Я правильно понимаю, вы играете в 1080р на 1080р мониторе, пишете 1080р, потом увеличиваете до 4к и заливаете это на ютуб чтобы он меньше испортил картинку когда ее будут смотреть в 4к(Если еще смогут воспроизвести и хватит канала) на 1080р мониторе?
    Последнее редактирование: 14 апр 2014
  21. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Правильно понимаешь, но у меня в гайде тема апскейла не затронута, надо будет дописать. Ибо это отдельная песня.
    Сообщение добавлено 14 апр 2014, оригинальное сообщение: 14 апр 2014
    Я перестал стараться тебя понять.

Сейчас в этой теме: (пользователей: 0 и гостей: 0)