2

У меня проблемы с кодированием видео для YouTube. Контент не очень «удобен для сжатия» (это кадры геймплея Battlefield 4), но я на 100% уверен, что результаты могут быть лучше. Некоторые ссылки:

Команда, которую я использую для вызова кодировщика:

ffmpeg.exe -i %INPUT%.avs -c:v libx264 -profile high -g 15 -keyint_min 15 -coder 1 ^
-preset slow -bf 2 -subq 9 -crf 18 -c:a libvorbis -pix_fmt yuv420p %OUTPUT%.mp4

Я пробовал много разных конфигураций:

Но никто, кажется, не делает вещи по-другому. Даже необработанные неизмененные кадры, записанные с помощью ShadowPlay, выглядят плохо: http://youtu.be/bLR-QavrpGU. Может быть, я должен попробовать другой кодер? Или использовать другой контейнер? Я выбрал свои варианты в соответствии с официальным руководством YouTube: https://support.google.com/youtube/answer/1722171.

У меня сейчас нет идей. Любая подсказка будет высоко ценится.

PS Я понимаю, что фрейм, на который я ссылаюсь, - это кошмар любого кодера, но почему это так плохо? И почему это влияет на всю картину, а не только на самые сложные ее части?

РЕДАКТИРОВАТЬ: я пробовал кодирование с фиксированным битрейтом (два прохода):

Альбом со скриншотами обновлен. 50 м кажется немного лучше, чем все остальные (более острые края, узнаваемые элементы HUD, такие как красная иконка танка на дереве слева от джипа; кроме уменьшенного 1440p, конечно, но это вне конкуренции), но это все еще не близко к тому, что должно быть.

3 ответа3

3

Проблема здесь заключается в том, что YouTube ограничивает битрейт видео 1080p до 6 Мбит / с, поскольку подавляющее большинство их пользователей в среднем поддерживают постоянную скорость загрузки 5,8 Мбит / с.

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

Я бы предложил исправить, но на данный момент нет. За последние 3 месяца было сделано несколько исправлений, но все они были удалены, так как YouTube корректирует свою инфраструктуру. Вот что вы можете попробовать, но YMMV и YT, возможно, уже отключили это.

  1. Запись в 1920x1080
  2. Кодируйте в 2048x1152, используя самый низкий битрейт, с которым вы можете иметь дело ради своих пользователей.
  3. Загрузить.
  4. Скажите своим пользователям играть в "оригинале" или 1440p, какой бы вариант им ни был доступен.

Результаты.

Если ваши пользователи оставляют видео в формате 1080p, оно МОЖЕТ быть немного более размытым для них, чем ваше предыдущее видео в формате 1080p. YT понижает их до 2048x1152 и сокращает битрейт до 6 Мбит / с. Если они выполняют потоковую передачу с полным разрешением, они все равно будут выполнять понижающую дискретизацию, хотя и на своих собственных машинах, и им будет предоставлен НАМНОГО более высокий битрейт. Чем выше битрейт, тем лучше и хуже. Это позволяет им получать изображение более высокого качества, но большинству людей придется предварительно загружать половину видео, чтобы предотвратить приостановку загрузки. Dash воспроизведение также ограничит их 30-секундной предварительной загрузкой за раз, если они не отключили его вручную, поэтому им это тоже понадобится.

2

Там не так много, вы можете сделать. Если исходный файл выглядит плохо на YouTube, то перекодирование не улучшит ситуацию. Я предполагаю, что вы перекодируете ваши «необработанные неизмененные кадры, записанные с ShadowPlay». Всегда рекомендуется загружать исходный контент, если это возможно, если, конечно, это не файл с ожирением и его загрузка нецелесообразна, поскольку YouTube собирается перекодировать все, что вы ему дадите. На мой взгляд, HD-версия вашей первой ссылки не выглядит ужасно для меня, и сравнение снимков экрана не совсем "честно", так как человеческий глаз не смотрит такие видео.

Что касается вашей команды:

  • Выглядит неплохо для перекодирования: -crf является наиболее важным фактором здесь. Вы можете попробовать немного меньшее значение. Некоторые люди утверждают, что видят разницу.

  • Я бы лично пропустил -g 15 -keyint_min 15 -coder 1 -bf 2 -subq 9 потому что пресеты будут работать с большинством этих опций, и они, как правило, умнее меня.

  • -pix_fmt yuv420p , вероятно, не нужен для YouTube, но учтите, что дрянной проигрыватель (QuickTime и т. д.) может некорректно декодировать что-либо, кроме цветового пространства YUV (планарное) с подвыборкой цветности 4: 2: 0.

  • Кодировщик автоматически выберет профиль, поэтому вам не нужно использовать -profile (который должен быть -profile:v так как для некоторых аудио-кодеров тоже есть -profile). Эта опция обычно используется, если ваш декодер или устройство не поддерживает более продвинутые профили.

  • Вы можете потоковое копирование аудио (-c:a copy) вместо того, чтобы перекодировать его, но я предполагаю, что ваше входное аудио было несжатым.

  • Просмотр полного вывода консоли ffmpeg помог бы с дальнейшими предложениями и предотвратил бы догадки.

  • Не полезное предложение, но какой-то другой сайт может обеспечить лучшее качество.

Также см:

-1
-movflags faststart B:\output.mp4

Попробуйте добавить это к окончательному результату перед загрузкой.

Сохраняйте частоту кадров HD до 24 или 25 и качество ниже 4, попробуйте соответствовать спецификациям видео, которые требуется YouTube до загрузки. NTSC это как 24000/1001. PAL, как 25,0. Возможно, нужно заплатить Youtube, чтобы загрузить лучшее качество в подписке как услуга.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .