Как YouTube кодирует мои загрузки и какой кодек я должен использовать для загрузки?


25

Связано с Какие кодеки / форматы подходят для полноценной видеозаписи на YouTube? Мне интересно, как именно я могу ожидать, что Youtube будет обрабатывать мои видео. Я знаю, что они настроили довольно усердную обработку, которая генерирует несколько копий моей загрузки с разными разрешениями; 1080p, 720p и 480p и, по-видимому, мобильный, по крайней мере.

Какой кодек (ы) они используют? Как продюсер у меня есть возможность скачать файл в формате MP4; однако я отмечаю, что сторонний загрузчик (который очень сомнительный и дрянной) выводит файлы как FLV. Я в основном задаюсь вопросом, будет ли мой кодек сохранен или перезаписан H.264 или чем-то еще, что они используют. Учитывая их удивительную совместимость между устройствами, я предполагаю, что они используют очень общий стандарт или несколько кодеков для каждого видео.

Так от какого кодека можно ожидать вывода моих видео, и если это зависит, от чего это зависит? Должен ли я настроить свою собственную кодировку, чтобы "хорошо играть" с кодеком Youtube, или это имеет значение с точки зрения качества? Я знаю, что могу выложить на Youtube практически все, что угодно, поэтому я в основном озабочен качеством видео.


Вот инструмент для просмотра доступных форматов для видео: h3xed.com/web-and-internet/…
akostadinov

Ответы:


31

Некоторая общая информация об используемых форматах:

YouTube использует 4 формата контейнера и 4 разных кодека. От популярности видео зависит, какие кодеки используются для вашего видео (см. Ниже, почему). Как правило, каждое загруженное вами видео будет закодировано в формате h.264 и будет мультиплексировано в контейнеры .flv и .mp4. Это стандарт, и это будет происходить для каждого видео. Хотя .flv будет использоваться только для разрешений ниже 720p. Это означает, что в контейнере .flv будут только 360p и 480p. Хотя каждое видео ниже 720p также будет иметь версию mp4. Для 240p YouTube также использует 3gp, который является довольно старым кодеком (основанным на MPEG-4 Part 2 (не путать с MPEG4 Part 10 или h.264)), предназначенным для мобильных устройств (задолго до эры смартфонов), он приходит в контейнер .3gpp.

Другой используемый кодек - это VP8, который поставляется в формате контейнера WebM. WebM - это формат, разработанный Google и задуманный как стандартный видеокодек для HTML5, поддержка которого в настоящее время довольно хороша в большинстве современных браузеров. WebM был представлен в HTML5-версии YouTube. YouTube только кодирует некоторые видео в WebM после того, как они были загружены, и в основном это только популярные видео (по тем видео, которые я видел, закодированные в WebM), поэтому нет уверенности, что ваше видео будет присутствовать в WebM. Хотя ситуация меняется с ростом поддержки WebM.

К настоящему времени YouTube также поддерживает VP9 в WebM, но пока только Chrome поддерживает этот кодек (по состоянию на 06/2015). В VP9 они также представили поддержку аудиокодека Opus (кроме AAC, который используется во всех других контейнерах).

Что касается вашего связанного вопроса (может быть, они должны быть объединены?)

Какой кодек / контейнер вы должны использовать для загрузки?

Это зависит, если вы ограничены / обеспокоены скоростью загрузки, тогда используйте h.264 Level 3.1 / 4.1 с основным профилем для SD или High Profile для HD. YouTube прекрасно это воспримет и будет выглядеть хорошо после того, как закодирован серверами YouTube. Я бы обычно рекомендовал битрейт ~ 4-5 Мбит / с для материала 720p и ~ 8-9 Мбит / с для 1080p. Для 4k идти на ~ 15 Мбит / с. Обычно это хороший баланс между размером и качеством. Если вы хотите лучшего качества, переходите на более высокий битрейт, а если хотите меньшее видео, переходите на более низкий битрейт.

Но имейте в виду, что YouTube ВСЕГДА будет кодировать ваше видео после его загрузки, независимо от того, какой кодек и настройки вы используете. Поэтому, если вы хотите получить теоретически лучшее качество для своих загрузок, выберите кодек без потерь для загрузки или, по крайней мере, визуально без потерь. Посмотрите на YouTube как на конечный результат в формате доставки / потребителя, а загрузка на YouTube - последний шаг в производстве, и в процессе производства вы хотите остаться без потерь. Но, пожалуйста, обратите внимание, что это всего лишь теоретическая вещь, практически я бы сказал, что это действительно не имеет значения, поскольку мы говорим о YouTube, а не о телевизионном вещании или кино.

Но если вы действительно хотите сделать это «идеальным» способом, используйте производственный кодек, а не потребительский кодек, такой как h.264. MJPEG будет хорошим кодеком для этого, YouTube определенно поддерживает его в контейнере .avi или .mov. MJPEG - это кодек с потерями, но визуальное качество будет таким же, как и у источника (если вы выбрали достаточно высокое значение качества, это практически JPEG в качестве видеокодека). Переход на настоящий кодек без потерь, по моему мнению, был бы пустой тратой дискового пространства и пропускной способности.

Но если вы хотите загрузить свое видео по-настоящему без потерь и не беспокоиться о времени загрузки, я рекомендую использовать стандартный кодек QuickTime, поскольку они почти все должны поддерживаться YouTube (обратите внимание, что не все из них без потерь, h264 также стандартный кодек QuickTime). Хотя YouTube не сообщает, какие кодеки QuickTime поддерживаются, к сожалению. Я думаю, анимация или JPEG2000 должны работать. Оба кодека могут быть на 100% без потерь.

Что касается частоты кадров, если вы можете выбрать, то используйте 25FPS (сейчас YouTube также поддерживает видео 50 и 60FPS, а значит, и 30FPS) во время записи / анимации, YouTube больше всего нравится (частота кадров, используемая для каждого видео), но если ваши кадры уже поступают с другой частотой кадров, то придерживайтесь этого и не интерполируйте вверх или вниз. YouTube будет обрабатывать конверсию для вас и обычно делает это лучше, чем ваш кодировщик. Им приходится иметь дело со всеми видами фреймов каждый день, и они решили эту (на самом деле очень сложную) проблему очень хорошо.

Аудио:

Для аудио используйте PCM, если вы хотите сохранить звук без потерь, но опять же, это просто теоретическое улучшение качества. AAC обычно выполняет ту же работу по качеству (субъективно) и будет меньше. Я рекомендую битрейт как минимум 192 кбит / с для AAC. Влияние на размер, как правило, не так велико, как у видео кодека, поэтому вы можете просто использовать скорость 320 кбит / с. YouTube преобразует аудио в ~ 24 Кбит / с (Mobile aka 3gp) ~ 64 Кбит / с (240p), ~ 128 Кбит / с (360p / 480p) и ~ 192 Кбит / с (720p +) с использованием кодеков AAC и Opus (только WebM).


3
Я согласен с этим ответом. Но есть практическое ограничение: скорость загрузки. Сколько времени вы позволяете загрузить? Целые выходные, ночь или пара часов до конца рабочего дня. Я сам установил ограничение в 2 ГБ для 10 минут видео, что в моем случае требует около 4 часов времени загрузки. Но действительно ли это ограничивает качество? Мое видео объемом 2 ГБ имеет скорость 30 Мбит / с, которую YouTube преобразует в 3 Мбит / с. Кодирование без потерь умножит время загрузки, но вывод YouTube все равно будет на скорости 3 Мбит / с. Пожалуйста, установите свои личные ограничения самостоятельно.
Fred42vid

Конечно, именно поэтому я сделал это (надеюсь) совершенно ясно, что это теоретически и никоим образом не практично. H.264 рекомендуется для почти всех случаев. Единственный реальный практический пример использования MJPEG, о котором я могу подумать, - это когда цветовая полоса возникает при первом кодировании h.264, которое ухудшается со вторым кодированием с YouTube.
PTS

1
Youtube поддерживает h.264 высокого профиля, поэтому вы должны использовать его всегда. Основной профиль для контента SD глупый. Оставлять 8x8dct всегда плохая идея. В x264 включение 8x8dct является наиболее эффективным компромиссом процессорного времени для лучшего качества по размеру файла (он же показатель: искажение или RD).
Питер Кордес

2
H.264 будет выглядеть намного лучше на том же битрейте, чем MJPEG. Если вы хотите лучшего качества, просто увеличьте битрейт (или настройку качества в постоянном качестве вместо целевого режима битрейта). Вы можете пройти весь путь до h.264 без потерь, если не возражаете загрузить огромный файл. Вероятно, он будет меньше, чем j2k без потерь. И то, и другое - безупречное качество, поскольку это означает, что без потерь.
Питер Кордес

1
Для аудио, IDK, если YouTube поддерживает FLAC или нет. Если это так, это будет ваш выбор для без потерь. В противном случае да, высокий битрейт AAC сделан с хорошим кодером. ( -c:a libfdk-aacне faacвстроенные по умолчанию или встроенные aacкодеры в ffmpeg.)
Питер Кордес

5

В каком формате YT выводить свое видео, зависит от разных факторов. Для большинства обычных видео они используют потоки в кодировке H264 для видео (AAC или MP3 для аудио) в форме файлов-контейнеров MP4 и FLV.

Это просто контейнеры, содержащие кодированные видеоданные - хотя формат с кодировкой H264 не является гарантией для FLV-файлов (или теоретически для файлов MP4), поскольку они также могут содержать Sorenson Spark, On2 VP6 и другие (особенно в случае старых видео) ).

FLV используются, поскольку они гарантированно могут воспроизводиться с помощью Flash-плеера.

На самом деле не программное обеспечение загрузчика определяет формат - они просто загружают то, что доступно, используя itag«внутренний» URL-адрес видео (не тот, что в браузере), чтобы определить параметры. Если они по желанию конвертируют видео, это будет функция, но не связанная с форматами YT.

Есть и другие форматы в дополнение к ним, такие как 3GP, WEBM, а также для 3D-фильмов. Некоторые предназначены для телефонов и нового стандарта Html5 (реализуемого как мы говорим), который может воспроизводить видео напрямую с помощью html (т.е. без flash-плеера).

Но вернемся к наиболее распространенным форматам: качество не имеет значения. Если FLV содержит H264, вы можете воспроизвести его так же хорошо, как файл контейнера MP4 с VLC Player f.ex VideoLAN . Если FLV не содержит H264, и вы хотите, чтобы он был контейнером MP4, содержащим H264, вам придется перекодировать его, что означает, что вы потеряете качество.

Поскольку в настоящее время YT, похоже, предпочитает H264, я бы посоветовал загружать и в этом формате (см. Их информацию о размерах и скоростях передачи, чтобы избежать перекодирования для лучшего разрешения).



0

Ваш вопрос: «Как YouTube кодирует мои загрузки и какой кодек я должен использовать для загрузки?».

Углубляясь в ваш вопрос, я вижу: «Должен ли я настроить свою собственную кодировку так, чтобы она« хорошо играла »с кодеком Youtube, или это имеет значение для качества? Я знаю, что могу выложить на Youtube почти все, и это будет нужно, поэтому В основном меня интересует качество видео. "

Ответ заключается в том, что YouTube использует Lavf57.25.100 для кодирования новых видео, в то время как видео старше нескольких лет были закодированы с помощью проприетарного кодера (который не имеет встроенного в свой идентификатор «Lavf57.25.100», а вместо этого имеет следующее предложение: «Произведен файл IsoMedia»). Google, 5-11-2011 "). Старые видео не были перекодированы, когда алгоритм был изменен.

Допустимо использовать много разных кодеков, YouTube рекомендует H.264 - см. Здесь: https://support.google.com/youtube/answer/1722171?hl=ru .

По какой-то причине вы решили не спрашивать о контейнере (что не то же самое, что кодек). Вы также предполагаете, что 1080P будет доступен, и не спрашиваете о самой важной вещи - битрейте (с последующим разрешением).

Если вы загружаете видео с разрешением 1080P при 60FPS, то максимальное доступное разрешение составляет 720P (при 60 FPS, на мобильном устройстве, поддерживающем 1080P), при загрузке видео 1080P с 29,97 FPS разрешается просмотр 1080P на мобильном устройстве.

Что важно, так это битрейт и разрешение, если ваша цель - «качество». Вы не можете увеличить или использовать без потерь для мошенничества, так как YouTube запускает «Тест на сжатие», чтобы определить, насколько сильно они могут раздавить ваше видео с минимальной деградацией - загрузите его, и оно будет сильно сжато, загрузите с высоким разрешением и высоким битрейтом, затем на YouTube будет отступать на дробление, и доставит гораздо лучший опыт просмотра.

См. Https://support.google.com/youtube/answer/1722171?hl=ru .

Обратите внимание, что разные резолюции и «ожидания качества». Для видео 4K с низкими ожиданиями вы можете загружать видео с битрейтом 35-45 Мбит / с, но если вы «продюсер» и качество вашей цели, вам нужна как более высокая частота кадров, так и использование как минимум 66-85 Мбит / с для Битрейт камеры (перед тем как сжать его очень нежно).

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

Сделайте запись, используя камеру производственного качества, видео с высокой частотой кадров и видео с битрейтом, очень аккуратно сжатые (Ffmpeg Q = <10), чтобы получить наилучшие результаты - «Кодек» (ваши слова) не является единственным определяющим фактором (хотя я бы посоветовал против старый).

Ffmpeg поддерживает контейнеры .MP4 и кодек H.264, поэтому используйте их.

Люди часто жалуются на то, что YouTube портит их видео, проблема в том, что они не загружали достаточно высокое качество, чтобы «отключить коммутатор» и заставить компрессор YouTube осторожно наступить на вашу загрузку. Идеально выглядят пиксельные видео. Правило GIGO применяется.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.