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. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    На цвета-то это не влияет. А тут про них речь.
    Недостаточности битрейта при 4к особо не ощущается.
  3. Elidan
    Offline

    Elidan

    Ник:
    Elidan#3881
    Сообщения:
    4.843
    Симпатии:
    488
    Давай уже советы по апскейлу, что думаешь. Достаточно ли просто утроить разрешение и на каком этапе это лучше делать? Этапа, как мне видиться, тут три:
    1. Render проекта в sony Vegas.
    2. Encode avisynth'ом
    3. Готовый файл для хранения на компе апскейлим для заливки на youtube.
  4. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    По гайду на этапе avisinth'a ставишь строчки.
    Код:
    AVISource("E:\Fraps\Нарезка\Fire.avi")
    Spline64Resize(3840,2160)
    ConvertToYV12()
    Я попробовал разные апскейлы, этот пока дал самые лушие результаты.
  5. Elidan
    Offline

    Elidan

    Ник:
    Elidan#3881
    Сообщения:
    4.843
    Симпатии:
    488
    После апскейла даже без деинтерлейса, интерлейс в видео практически незаметен за счет большого разрешения. Походу мой вариант хранения и на компе тоже)
  6. Kulala
    Offline

    Kulala

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

    Elidan

    Ник:
    Elidan#3881
    Сообщения:
    4.843
    Симпатии:
    488
    Ну я рендерил пару дней назад ночью, debugmode после инстала не появился в Sony Vegas, а терпение заканчивалось и вообщем я его дропнул )
    Кстати, там какие-то специальные танцы должны быть для debugmode? Что-то я его поставил плагины вегаса вроде указаны были, однако среди опций рендера не появилось.
  8. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Никаких танцев, в рэндер эс должно появиться.
  9. Elidan
    Offline

    Elidan

    Ник:
    Elidan#3881
    Сообщения:
    4.843
    Симпатии:
    488
    Ну вот я так и подумал, но поскольку была уже глубокая ночь и хотелось спать решил просто скипнуть и поставил рендер тем вариантом который мы до этого рассматривали. Вроде получилось сносно. Сделал две версии по старому варианту на 3к и 1к как раз сравним.
  10. Kulala
    Offline

    Kulala

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

    [​IMG]





    [​IMG]
    [​IMG]
    [​IMG]

  11. Elidan
    Offline

    Elidan

    Ник:
    Elidan#3881
    Сообщения:
    4.843
    Симпатии:
    488
    Все 3 замылены. Но из этих 3 - 2й наиболее норм. В третьем уже перебор с saturation'ом.
  12. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Это я с матрицами баловался. Все ролики были были пожаты следующим образом.
    Fraps RGB32 > upscale 200% > YV12 > x264 QC0 > залито на ютуб > слито с ютуба > заскринено > ресайз 50% бикубиком.
    только первый
    ConvertToYV12(matrix="PC.709")
    ColorYUV(levels="PC->TV")
    второй просто
    ConvertToYV12()
    а третий
    ConvertToYV12(matrix="PC.709")
    при переводе матрицы, цвет становится более трушным, но мелкая фактура затирается.

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

    [​IMG]



    [​IMG] [​IMG] [​IMG]
    Сообщение добавлено 20 апр 2014, оригинальное сообщение: 20 апр 2014
    Да и еще нужно понимать что это наиболее нагруженный кадр был выбран спецально, там видно битрейт подскакивает до 112Mbps при среднем битрейте 24Mbps у видео.
  13. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Тут вопрос назрел, а ролики-то будут?))
    Я ни одного от вас не видел.
  14. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    От меня не будет ))
  15. AlexUsman
    Offline

    AlexUsman

    Ник:
    Иуда
    Сообщения:
    769
    Симпатии:
    65
    Про меня есть ролики.
    Только для избранных руру, в саппорте. :dolan:
    Nazokat и Ivan нравится это.
  16. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Добавил в первый пост про апскейл и добавил F.A.Q.
  17. Elidan
    Offline

    Elidan

    Ник:
    Elidan#3881
    Сообщения:
    4.843
    Симпатии:
    488
    оставлю тут чтоб не забыть

  18. Elidan
    Offline

    Elidan

    Ник:
    Elidan#3881
    Сообщения:
    4.843
    Симпатии:
    488
    После загрузки на ютуб роликов (5-15 ГБ) засирается физическая память. Вплоть до 99% на этапе чего комп становится фактически не юзабелен. Причем помогает только перезагрузка машины, закрытие хрома не освобождает память, как и бесконечные манипуляции с такс менеджером РАММапом и даже регистром.

    Кто сталкивался с таким мемори ликом? У меня 32 ГБ, но после загрузки 5-6 видео по 15 ГБ засирается все равно.
  19. AlexUsman
    Offline

    AlexUsman

    Ник:
    Иуда
    Сообщения:
    769
    Симпатии:
    65
    Не сталкивался.
    Другие браузеры так же себя ведут?
    Хромой процесс толстеет?

    Бтв, для себя открыл браузеры жрущие меньше 1гб памяти - мидори, симанки, капзиллу и ка-мелеона.
    Только вот с ними жопку нужно немного напрягать.

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