Пожалуйста, объясните кодеки в моем примере [закрыто]

Может кто-нибудь объяснить, что происходит в моем проекте? Пожалуйста, используйте как можно больше деталей, я просто хочу узнать, спасибо.

У меня есть веб-сервер Apache. Он содержит много видео (.mp4 .mkv, которые являются? контейнерами?). Также у меня есть файлы asx, которые указывают на соответствующие видео. Я хочу, чтобы пользователи транслировали видео (на VLC или Windows Media Player), но сейчас это очень медленно. Я думаю, что лучшее понимание кодеков поможет.

  • Итак, кодеки сжимают и распаковывают видео, верно?
  • Распаковка происходит на стороне клиента в медиаплеере. Но где происходит сжатие?
  • Это тоже в медиаплеере?
  • Или это можно указать в файле asx?
  • Или видеофайл выбирает, какой кодек он использует для сжатия и распаковки.
  • Могу ли я выбрать, какой кодек использовать?
  • Я знаю, что для одних ситуаций есть лучшие кодеки, чем для других. Кто-нибудь может это объяснить?
  • Я видел пару своих видео, использующих LAV для распаковки, в то время как некоторые используют H264/5 (не могу вспомнить, какой именно).
  • Что касается потоковой передачи, есть ли способ сказать: если скорость сети низкая, измените видео с 1080p на 480p?
  • Есть ли определенные настройки, о которых я должен знать в любом из моих медиаплееров, чтобы помочь с буферизацией, потоковой передачей, кодеками и т. д.?
  • Просто увидел в тегах внизу, что есть кодек и транскодирование. Есть ли разница? Определяет ли кодек, как происходит транскодирование? Я понимаю, что вопросов много, но если у кого-то есть ответы на любой из них, пожалуйста, дайте мне знать. Опять же, я просто пытаюсь научиться

РЕДАКТИРОВАТЬ Если мне нужно внести изменения в медиаплеер, было бы лучше, если бы медиаплеер был встроен в мой веб-сервер? И идеи о том, как это сделать/с чего начать?

Пожалуйста, разбейте это на отдельные вопросы. Как бы то ни было, это слишком широко, чтобы дать вам эффективный ответ.
Как насчет: Что происходит в моем примере? Где кодек на самом деле выполняет сжатие и распаковку?

Ответы (1)

Итак, кодеки сжимают и распаковывают видео, верно?

СЖАТИЕ ДЕСжатие. Ага. Точно так же, как с кодировкой текста, например, ascii или unicode, но с видео вы берете растр (сетку пикселей) и превращаете его в поток данных. Часто цель состоит в том, чтобы сделать размер данных как можно меньше, хотя иногда необходимо убедиться, что пиксели, реконструированные при чтении файла, точно такие же, как пиксели, которые были введены, или комбинация двух этих параметров. .

Распаковка происходит на стороне клиента в медиаплеере. Но где происходит сжатие? Это тоже в медиаплеере? Или это можно указать в файле asx? Или видеофайл выбирает, какой кодек он использует для сжатия и распаковки.

Распаковка происходит в клиенте, будь то браузер, медиаплеер или плагин. Сжатие происходит один раз, когда вы сжимаете видео, т.е. когда вы создаете файлы mp4, mkv и т.д.

Различные типы файлов действительно являются разными контейнерами, а контейнеры могут содержать потоки, закодированные в разных кодеках. Возьмите файл mp4. Видео обычно кодируется в формате h.264, а звук, вероятно, в формате aac, и может быть поток субтитров, закодированный как movtext. Часто форматы контейнеров могут содержать множество различных кодеков. Контейнер quicktime (mov) совместим с десятками кодеков, как и mkv.

После того, как файл сжат с использованием определенного кодека, вам понадобится что-то, что может прочитать этот кодек, чтобы воспроизвести его. Подробная информация о том, что такое кодек, а также параметры, сообщающие игроку, как его декодировать, находятся в контейнере. Таким образом, игрок также должен знать, как читать контейнер.

Файл .asx будет просто указывать на поток, и игрок должен его декодировать.

Могу ли я выбрать, какой кодек использовать? Я знаю, что для одних ситуаций есть лучшие кодеки, чем для других. Кто-нибудь может это объяснить?

Да, разные кодеки полезны для разных целей. Если вы транслируете видео, вам нужно хорошее качество, но с минимально возможным битрейтом. Часто это означает использование сжатия с потерями, когда сжатое видео теряет качество по сравнению с несжатым оригиналом. Хитрость заключается в том, чтобы потерять качество таким образом, чтобы это было менее очевидно для людей. H.264, вероятно, является подходящим инструментом для работы, если только не возникают проблемы с патентными ограничениями или стоимостью лицензирования.

Однако, если я визуализирую промежуточный файл в своей цепочке постобработки, мне нужна высокая битовая глубина и качество без потерь или с минимальными потерями. Я мог бы выбрать 12-битное 4:4:4 без потерь или пойти на компромисс и использовать кодек, такой как cineform или proRes, в зависимости от моей ОС. Хотя они сохраняют качество и динамический диапазон, они были бы ужасными кодеками для потоковой передачи, 12-битный 4:4:4:4 без потерь имеет скорость передачи данных ~ 2500 МБ/с. Другие кодеки представляют собой компромисс между размером файла и качеством, другие действительно хорошо работают при сверхнизких битрейтах или требуют меньше ресурсов процессора, третьи хороши тем, что не обременены патентами или лицензиями.

Я видел пару своих видео, использующих LAV для распаковки, в то время как некоторые используют H264/5 (не могу вспомнить, какой именно).

LAV — это программная библиотека, которая используется программным обеспечением для сжатия и распаковки. Он способен читать и записывать многие кодеки. H.264/5 - это кодеки.

Что касается потоковой передачи, есть ли способ сказать: если скорость сети низкая, измените видео с 1080p на 480p?

да, я так думаю - YouTube делает это, но не в моей области знаний, и, вероятно, лучший вопрос для суперпользователя.

Есть ли определенные настройки, о которых я должен знать в любом из моих медиаплееров, чтобы помочь с буферизацией, потоковой передачей, кодеками и т. д.?

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

Просто увидел в тегах внизу, что есть кодек и транскодирование. Есть ли разница? Определяет ли кодек, как происходит транскодирование? Я понимаю, что вопросов много, но если у кого-то есть ответы на любой из них, пожалуйста, дайте мне знать. Опять же, я просто пытаюсь научиться

Транскодирование — это преобразование из одного кодека в другой. Итак, скажем, я освоил один из моих 12-битных кодеков без потерь. Теперь у меня есть видеофайл, который занимает сотни концертов. Возможно, я захочу сделать копию для Интернета, поэтому я запускаю свое приложение для транскодирования и говорю ему взять мастер и сжать его в файл mp4, который займет часть места.

Если я передаю один и тот же файл со своего рабочего компьютера по сравнению с домашним компьютером, потоковая передача отличается; один поток с большей задержкой, чем другой. Связано ли это с тем, какой метод используется для распаковки, или это связано с пропускной способностью соединения?
Возможно, процессор, графический процессор и оперативная память могут влиять на производительность воспроизведения, но, как вы уже догадались, скорее всего, это пропускная способность.