без использования серверного языка?
Да, конечно.Клиент может выбрать, какую версию видео загрузить.
Можно ли это сделать без загрузки нескольких видео (по одному для каждого качества)
Практически нет, нет,Вам нужно перекодировать это видео и загрузить эти разные версии.
Не нашли никого, кто сказал бы, что это невозможно сделать
Несколько вещей, которые следует учитывать ..Во-первых, видеофайл может содержать много потоков.Я не знаю, каково ваше отвращение к нескольким файлам, но да, возможно иметь несколько битрейтов видео в одном контейнере.Например, один MP4 может легко содержать видео со скоростью 768 кбит / с, видео со скоростью 2 Мбит / с и видео со скоростью 8 Мбит / с, при этом имея одну звуковую дорожку 256 кбит / с.
Для воспроизведения такого файла клиент (реализованный с помощью Media Source Extensions и Fetch API), необходимо знать, как анализировать контейнер и делать ранжированные запросы для определенных фрагментов из файла.Насколько мне известно, такого клиента не существует, так как нет особого смысла, когда вы можете просто использовать DASH и / или HLS.Браузер определенно не выполняет эту работу за вас.
Некоторые видеокодеки, такие как H.264, поддерживают концепцию масштабирования.Идея здесь в том, что вместо нескольких кодировок есть только одна, где дополнительные данные улучшают предыдущее видео, которое было отправлено.С этим механизмом связаны значительные накладные расходы, и вам придется выполнять еще больше работы.Мало того, что ваш код теперь должен понимать контейнер, но теперь он должен также обрабатывать используемый кодек ... и он должен делать это эффективно.
Подводя итог, можно ли использовать одинфайл?Технически, да.Есть ли какая-то выгода?Никто.Есть что-нибудь готовое для этого?
Редактировать: Теперь я вижу ваш комментарий о том, что проблема связана с местом для хранения.Вы действительно должны поместить эту информацию в свой вопрос, чтобы получить полезный ответ.
Обычно YouTube и другие люди транскодируют вещи заранее.Это особенно полезно для видео, которое получает тонну трафика, так как сегменты могут храниться в CDN с узлами, расположенными ближе к клиентам.Да, также возможно перекодировать по требованию.Вам нужно быстрое оборудование для этого.