Может кто-нибудь объяснить, что происходит в моем проекте? Пожалуйста, используйте как можно больше деталей, я просто хочу узнать, спасибо.
У меня есть веб-сервер Apache. Он содержит много видео (.mp4 .mkv, которые являются? контейнерами?). Также у меня есть файлы asx, которые указывают на соответствующие видео. Я хочу, чтобы пользователи транслировали видео (на VLC или Windows Media Player), но сейчас это очень медленно. Я думаю, что лучшее понимание кодеков поможет.
РЕДАКТИРОВАТЬ Если мне нужно внести изменения в медиаплеер, было бы лучше, если бы медиаплеер был встроен в мой веб-сервер? И идеи о том, как это сделать/с чего начать?
Итак, кодеки сжимают и распаковывают видео, верно?
СЖАТИЕ ДЕСжатие. Ага. Точно так же, как с кодировкой текста, например, 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, который займет часть места.
Майкл Либман
Алекс973