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

    Ivan

    Ник:
    Ivan, Весна
    Сообщения:
    6.960
    Симпатии:
    213
    можно перенести в открытый раздел здесь
  4. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Перенеси.
  5. Elidan
    Offline

    Elidan

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

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Ага, кстати дебагмод работает и для АЕ.
  7. Malveillance
    Offline

    Malveillance Джастин Бибер

    Сообщения:
    2.545
    Симпатии:
    120
    Хотелось бы 2 идентичных видео — одно сжатое дефолтным вегасовским кодеком в 8 мбс, второе по гайду и оба на ютубе, чтобы посмотреть разницу.
    Чем плох ffmpeg.exe?
    Сообщение добавлено 12 апр 2014, оригинальное сообщение: 12 апр 2014
    Хотя ладно, фик с этими видео. Не будет там разницы.
    В общем, какой бы не был оригинал, ютуб его все равно пережмет с битрейтом 8 Mbps для 1080p, 10 Mbps для 2k и 35-45 Mbps для 4k.
    В 99% случаев хватает исходника с шедоуплея. Если нет шедоуплея, берется MJPEG (75-80% качества) бандикама или плейклава и просто рендерится в 30-40 Mbps обычным дефолтным вегасовским кодеком как промежуточный вариант для заливки (это это для 4k). Для 1080 можно и в 8-12 рендерить, пофик.
  8. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Ну есть видео сравнения в теме в закрытом разделе, ты там еще присутствовал, когда это все выкладывалось, сравнивать можно мои видео с видео того же Блида, вроде ютуб один, кодек тот же, а разница есть.
    Все очень просто, битрейт он слепой, ему пофигу на что идти, на мусорную фактуру или на полезные пиксели.
    Дефолтный кодек Вегаса это что?
    ffmpeg ничем не плох, я про ничего и ничего и не говорил.
    Давай источник снятый в лосслес качестве в цветовом пространстве RGB, ты зажмешь своим методом, а я своим, вот и сравним.
    А так беспредметный разговор.
  9. Malveillance
    Offline

    Malveillance Джастин Бибер

    Сообщения:
    2.545
    Симпатии:
    120
    Не проще полезные пиксели сделать просто повысив битрейт? Какой вообще битрейт на выходе после кодирования?

    Ну в вегасе этот темплейт называется Sony AVC/MVC, по сути обычный x264 с минимумом настроек.

    Я не снимаю в лосслес для ютуба, это не практично.
    Твоя метод сойдет, если делать видео для хранения на харде, чтобы по максимуму сохранить качество при небольшом, относительно лося, размере, но не под заливку на ютуб, имо.
  10. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Покаж)

    Все что я вижу пока - это либо 1080p говно на youtube. Либо 4к, которое смотреть на youtube можно. Вот и вся разница для тех, кто не пытается искуственно ее найти.
    И для 4k ютуба не нужно никаких лишних телодвижений вообще.
  11. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    - говно
    20-40Mbps в зависимости от насыщенности сцен.
    Нет, этого категорически недостаточно, простыня с настройками x264 приведена не зря.
    Твоя главная ошибка в игнорировании цветовой субдискретизации
    Показать
    [​IMG]
    [​IMG]
  12. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Не, там не зря в закрытом разделе лежит.
    Могу тебе предложить такой же опыт как и Серсису.
    Во-первых, к сожалению, 4к долго грузится, а 1080 режим у видео с максималкой 4к, хуже, чем просто 1080.
    Во-вторых, твои 4к были очень унылы, у меня получалось лучше, может конечно субъективно, но смотри выше про предложение.
    Не согласен.
  13. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Какая разница? На нормальных интернетах оно норм грузится. Да даже на не нормальных, видео в 1080p для АА - несмотрибельное говно.

    Еще во времена AION несколько лет назад заморачивался с этой темой. Единственный адекватный вариант для h264 это Hi444PP, там твой красный цвет будет именно красным, таким как мы его видим в игре, вот только воспроизводиться твое видео будет у единиц, а youtube его вообще не поймет.

    Все что ты выше писал не понятно вообще зачем. При чем тут субдискретизация если ты в любом случае используешь h264, и ты в любом случае теряешь потому что 4:2:2.

    Ну так сними 20 секунд рандом видео которое можно показать.
  14. Malveillance
    Offline

    Malveillance Джастин Бибер

    Сообщения:
    2.545
    Симпатии:
    120
    Короче, опять говноспор. Херня все это. Для хранения норм, для ютуба — шедоуплей - вегас - ffmpeg. Для 1080 просто рендеришь перед заливкой в битрейт 20-40. Никакой разницы там для 99% зрителей не будет, только время терять.
  15. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Я рендерю прямо из вегаса и получаю 4к на ютубе. Все эти "тонкие настройки" вообще посрать, т.к. у ютуба в любом случае свои настройки и он в любом случае перекодирует видео.
    CARIBA нравится это.
  16. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Вопрос в том какого качества будет это видео, если у тебя затерта мелкая фактура, то ютуб ее затрет еще больше, а если она у тебя более или менее четкая, то на ютубе получится терпимо. В этом все дело.
    Читай внимательно первый пост, Vegas работает в RGB пространстве.
    Идея максимально сохранять источник в плоть до самого момента кодирования. Потому что если перевести из 4:4:4 в 4:2:2 и обратно, качество теряется. Т.е переход из RGB (4:4:4 хотя не корректно так говорить) в YUV 4:4:4 не дает сто процентного совпадения.
    Напомню, что источник, который ты видешь глазками на мониторе в игре - RGB.
    Сообщение добавлено 12 апр 2014, оригинальное сообщение: 12 апр 2014
    Особенно если учесть что твой метод в 2 раза дольше )) Мало того что ты 2 раза кодируешь источник, что уже само по себе трололо, нормальные кодеры на каком нибудь думе или видеохелпе сразу уже обосрали бы тебя, так и еще время тратишь на это в 2 раза больше.
    Сообщение добавлено 12 апр 2014
  17. Malveillance
    Offline

    Malveillance Джастин Бибер

    Сообщения:
    2.545
    Симпатии:
    120
    Хранить тонны материала в лосе не для меня. У меня источник вообще изначально уже закодирован. И еще 1 раз кодирует ютуб, так что похер.
    И я не занимаюсь профессиональным кодированием, задача сделать удобоваримое видео для ютуба решается в разы быстрее чем в твоем гайде.
  18. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    60к битрейт у шедоуплей видео. Один единственный раз нужно зарендерить видео из вегаса, при желании с теми же 60к. Там все отлично с любой фактурой.
    И это дело кормится ютубу, все.
    99% пользователей на это наплевать примерно так же, как на профессиональный монитор для художников. Похрену оригинальный красный цвет там будет или его оттенок.
    Если ты используешь h264, это значит что ты используешь 4:2:2, а это значит что у тебя уже говно в плане цветов в сравнении с RGB оригиналом. И видно это невооруженным взглядом.

    Единственное что имеет значение для обычного пользователя - 1080p на ютубе или 4к. Т.к. разница в битрейтах огромная.
  19. Kulala
    Offline

    Kulala

    Ник:
    Kulala
    Сообщения:
    7.354
    Симпатии:
    293
    Если все так хорошо, почему тогда меня тошнит от качества твоих видео? :dumb:
  20. bl33d
    Offline

    bl33d

    Ник:
    Katana
    Сообщения:
    11.007
    Симпатии:
    39
    Ну так ты покажешь твое божественное творение, любое, или нет?
    Что бы понимать, о чем хоть речь идет.

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