Сегодня никого не удивить скоростью интернета 100 Мбит\с., но существует проблема, как её использовать. Все основные операции загружают сеть не полностью. Одновременно с этим более высокую популярность получают тяжёлые форматы аудио и видео 4k-8k, которые хочется смотреть онлайн. И глядя на высокие скорости интернета, возникает логичный вопрос — а почему этого нет? Как освоить всю скорость предоставляемую провайдером? Как со стороны клиента, так и со стороны сервиса. Рассмотрим все эти вопросы в статье.

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

1. Начнём с базовых основ сегодняшних технологий передачи данных.
Существует большой пробел в знаниях многих людей по алгоритмам передачи данных на высоких скоростях — более 10 МБит\сек… Давайте восполним эти пробелы:

Пробел №1. Проблема в том, что совокупность технологий радиопередачи сейчас ориентирована на непрерывную передачу данных, как наиболее лучший сценарий.

Всё что передаётся по wi-fi\3G\4G и даже по проводам будет быстрее всего передаваться, если передача будет постоянная, пусть даже с меньшей скоростью, чем максимальная. Это будет на много быстрее, чем передавать с перерывами, но на максимальной скорости.

Причины:

  • для возобновления связи в трафик добавляется больше служебной информации;
  • при возобновлении связи сервер может понизить клиентский рейтинг и отдавать данные с меньшей скоростью (возможно из-за появления других клиентов), либо вообще не отдавать. Даже в домашней wi-fi сети роутер может понизить рейтинг, например, из-за wi-fi пылесоса. Т.е. это относится ко всем сетям где есть больше 2х клиентов. В общем-то почти ко всем :-)

Пробел №2. При копировании данных любая программа пользуется неким «ковшом», который черпает данные в источнике и переносит их в место назначения. Так вот этот ковш в зависимости от скорости передачи данных должен быть разных размеров. Это просто понять: если черпать чайной ложкой ведро воды, то это займёт на много больше времени, чем черпать кружкой.

Пробел №3. Для повышения скорости загрузки данных по сети, должна использоваться оперативная память. Любые малейшие миллисекунды задержки, при записи поступающих данных выливаются потом в секунды, минуты и часы. Что бы этого не происходило нужно писать данные сначала в оперативную память, а затем более объёмным «ковшом» на постоянный носитель (жёсткий диск). Иначе скорость передачи данных будет драматически падать.

Этого достаточно, что бы просто копировать файл.

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

Самая лучшая стратегия строится из выше сказанного о пробелах:

  • загрузка данных должна происходить независимо от воспроизведения, непрерывно;
  • для обеспечения перемотки, необходимо создавать ещё один поток загрузки данных;
  • для преодоления фриза при старте, из-за получения технических данных (кодеках и.т.п.), необходима предзагрузка. Опытным путём я нашёл формулу: размер всего файла * 0.002 или 0,2%.

Этого достаточно для воспроизведения Flac файлов.

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

И тут начинается ветвление алгоритмов загрузки данных! Без технических подробностей приведу их в примерном объёме:

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

Я всё это сделал и немного больше. Получилось совершенно сказочно. Данные летают и воспроизведение не прерывается. Flac файлы закачивались полностью на 1-3 секунде воспроизведения. И этого стало достаточно для воспроизведения Full HD видео.

4. Проблема в том, что медиа файлы у нас сильно отличаются в размерах. И с 4k Blu-Ray фильмами, которые весят около 80-120 Гбайт, ничего не получилось. Плеер создавал 15 потоков на старте, и они все делили между собой скорость, которой, конечно, не хватало для главного потока, которого ждал плеер. Данные грузились на максимальной скорости, да… загружали полностью канал, но 4k видео висело и воспроизводилось медленнее, чем слайдшоу. Получается много потоков это вред для 4k видео, но где та граница, после которой польза в Full HD переходила во вред в 4k?!

В итоге всё упёрлось в скорость канала. Для того что бы оптимизировать работу потоков необходимо знать две вещи:

а) Необходимую скорость для воспроизведения, которая вычисляется: (размер файла / его длительность в секундах) * 8.

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

Если мы управляем загрузкой данных, то у нас обязательно есть возможность измерить скорость загрузки. Теперь каждый поток знал свою скорость (в Мбит\сек.) и это не накладывает дополнительных расходов на производительность. Обязательно нужно обозначить с каким потоком в данный момент работает плеер. Всё начинается в обычном, многопоточном режиме. Но как только плеер вычисляет длительность медиа-файла в секундах и передаёт эти данные, то все потоки получают фиксированную, необходимую скорость для воспроизведения. Сразу после этого все потоки (кроме главного) сравнивают необходимую скорость со скоростью главного потока и если его скорость ниже, то становятся на паузу. Далее, главный поток медленно наращивает свою скорость, и как только, он превышает в два раза (так сделал я) необходимую скорость, то он снимает с паузы все второстепенные потоки.

По наблюдениям, далее, через некоторое время, скорость основного потока снова падает и все второстепенные потоки опять переходят в паузу, и так пока не докачаются данные или воспроизведение не завершиться. Такая гибкая стратегия, когда загрузка данных параллелится и при необходимости сжимается в один поток, полностью загружает канал связи и одновременно обеспечивает максимально быструю загрузку, именно, необходимых для воспроизведения данных. Эта стратегия одинаково хорошо работает на файлах и 10 Мбайт и 100 Гбайт. Для воспроизведения по сети без потерь, невозможно придумать ничего лучше. Если есть предложения буду рад обсудить их в комментариях.

Подходит для воспроизведения медиа файлов любых объёмов 4k-8k.

Прогрессивный стриминг — самый быстрый вид стриминга, при передаче данных в исходном качестве. Для повышения скорости передачи данных он задействует оперативную память и мультипоточность. Данные загружаются асинхронно потоку воспроизведения, но при активном взаимодействии с ним. Во время воспроизведения измеряется скорость получения данных, и количество активных потоков адаптируется под доступный канал передачи данных.
Именно сейчас в мире идёт большая тенденция к увеличению количества видео в высоком разрешении, и рост популярности устройств для его воспроизведения.


Источник www.vox.com

Битрейт 4k видео большой, но не заоблачный. Самый эффективный кодек VP9 на сегодня сжимает 4k видео в 15 Мбит\сек. с аудио выходит около 15,5. Blu-Ray фильм в 100 Гбайт имеет битрейт около 60 Мбит\сек… Эти скорости интернета есть у любого в мире, желающего посмотреть 4k видео. Это значит 4k видео можно смотреть онлайн уже сейчас!

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

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

А теперь посмотрим на недостатки обычного стриминга, по сравнению с прогрессивным:

  • невозможно предзагрузить следующий файл\предугадать и подготовить следующее действие;
  • даже, при временном отключении интернета\перебоях в скорости появится заметный фриз звука\изображения;
  • канал связи не используется полностью, и половину времени воспроизведения простаивает, в то время, когда данных надо грузить ещё много;
  • невозможность воспроизводить 4k-8k видео, даже по wi-fi без фризов. Постоянные порывы связи и скачки скорости до максимума не выдержит, даже домашний wi-fi на протяжении всего фильма — это 2 часа и более;
  • это накладывает ещё большую нагрузку при воспроизведении 4k контента, так как плееру нужно держать в оперативной памяти от 200-300 Мбайт данных видео (при необходимой скорости 60 Мбит\сек.). При воспроизведении через прогрессивный алгоритм стриминга эта необходимость отпадает, так как воспроизведение идёт с диска, а не по сети.

По этим пунктам понятно, что стримить, как раньше уже нельзя. Конечно можно нарастить скорости\память\кеш в десятки раз, но зачем, если сегодняшних скоростей уже достаточно и проблема кроется в алгоритмах. Плохие алгоритмы рано или поздно заходят в тупик. На сегодня прогрессивный стриминг — единственная технология позволяющая стабильно и комфортно смотреть 4k 100 Гигабайтные фильмы онлайн.

Как пример работы технологии, я написал мультимедийное приложение Media Library. Оно может использоваться, как прослойка для других плееров, так как открывает http прямые ссылки и может использовать внешний плеер для их воспроизведения. Возможно потребуется оптимизация под некоторые плееры, но, например, MxPlayer работает точно.

Сценарий использования:

  1. Вы открываете прямую ссылку из стороннего приложения (пример: HDVideoBox, Es Проводник) с помощью плеера.
  2. При открытии, в плейлист добавляется элемент с этой ссылкой и начинается воспроизведение. Его необходимо остановить, либо можно сразу перейти к следующему пункту.
  3. Свайп в право нового элемента откроет меню в котором необходимо выбрать «Открыть с помощью...» и далее выбрать, например MxPlayer.

В таком сценарии будут использованы все вышеописанные алгоритмы получения данных и MxPlayer. Моё приложение поддерживает следующие протоколы: nmdc\http\ftp\samba, следовательно все эти протоколы поддерживает и внешний плеер.

Видео файлы 4k весом 100 Гбайт воспроизводятся с минимальными задержками и скачиваются в память на максимально возможной скорости. Можно предзагрузить больше данных, просто нажав паузу, но, как правило это не требуется. Воспроизведение всегда стабильное, если не стабильная скорость канала находится около необходимой скорости для воспроизведения.

Из-за вышеописанных пробелов политика самых крупных компаний складывается не совсем правильным образом, что замедляет прогресс и часто не даёт пользоваться имеющимися устройствами и каналами связи в полном объёме.

В приложении предусмотрено сохранение кеша на внешний носитель, но из-за странного усложнения доступа к внешним носителям компании Google, в данный момент поддерживается в основном устройствами фирмы Samsung и версией Android 5.0+. В дальнейшем появится полная поддержка внешних usb носителей.

В целом, алгоритм существенно повышает качество и скорость загрузки данных при стриминге, как небольших файлов 30-50 Мбайт, так и больших 50-120 Гбайт.

В перспективе может использоваться:

  • для качественного воспроизведения 4k-8k медиа контента на мобильных телефонах, телевизорах и других устройствах;
  • в виртуальной реальности для отображения объёмных сцен в высоком разрешении;
  • в сочетании с торрент подобными, пиринговыми протоколами;
  • для качественного воспроизведения музыки в высоком разрешении на любых устройствах. Опытное тестирование показало, что для этого достаточно 5 Мбит не стабильного канала связи.

Комментарии (60)


  1. hazratgs
    13.06.2019 11:22

    У меня вопрос, получается 1 сервер это примерно 50 клиентов? Как вы решаете проблему большого потока пользователей, когда к стриму подключилось сразу 30 тыс. человек? используете cdn (как и какой? кешируете чанки .ts?)? или свое решение?


    1. Master255 Автор
      13.06.2019 11:34

      В идеале нужно передавать скаченные данные между пользователями, если сервер не справляется. Это тоже можно гибко решить, зная скорость загрузки с сервера (основного источника). Решается добавлением ещё одного потока.
      У меня не было такой проблемы. Так как контента очень много и имея кеш, в который файлы загружаются целиком на 10й секунде воспроизведения, загрузить полностью канал сервера практически невозможно.


      1. hazratgs
        13.06.2019 13:35

        не совсем понимаю, как собираетесь передавать данные между клиентами, если это hls поток, где каждый чанк весит примерно 2-3мб, смотрят стрим примерно 30k пользователей…


        1. Master255 Автор
          13.06.2019 19:07
          -1

          нет, чанков тут нет. Это не HLS поток. Это ссылка на прямой файл.
          Между пользователями можно передавать данные необходимые потокам для скачивания. Ведь у всех будет какая-то часть данных уже скачена, следовательно те кто скачал больше могут передать данные тем кто скачал меньше.
          Вообще, то о чём вы говорите практически нереальный случай.
          Объясню почему:
          Сервер отдаёт со скоростью 200 Мбит\сек. Пользователей 30 тыс. человек.
          Что бы этим пользователям полностью задедосить сервер им нужно одновременно зарегаться в системе и начать смотреть одновременно 4k фильмы без остановки.
          Так не бывает. Одновременно пользователи не регистрируются и они не договариваются об одновременном просмотре.
          Получается если у каждого пользователя есть свой кеш, то файл он стримить может, только один раз и время в которое сервер будет загружен минимизируется за счёт прогрессивной загрузки данных.
          Выходит 30 тыс. пользователей регаются в разное время, смотрят разный контент в разное время, кешируют его и повторный просмотр этих же медиа файлов не требует у них наличия интернета.
          Причём, при возникновении заторов из-за размера канала сервера, сервер оптимизирует скорость раздачи — всё тоже самое, что и с обычным стримингом сейчас.
          Возможно, это увеличит нагрузку на канал сервера из-за загрузки видео целиком, а не загружая какую-то его часть, но если у вас проблемы с этим, то всегда можно использовать передачу данных из кеша других пользователей, у которых есть эти данные в кеше. Когда у меня будет свой YouTube, я с лёгостью сделаю это и вы сможете проверить. Ок.


        1. Master255 Автор
          15.06.2019 14:28

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


        1. Master255 Автор
          16.06.2019 21:49
          -1

          Кроме этого всего, контента столько много, что нет никакой необходимости, никогда, смотреть видео в первые секунды выхода. Даже, в торрентах видео начинает качаться, через час, только после публикации. Если пару часов посмотреть другое видео, то ничего не изменится. Все останутся живы.


  1. Sovigod
    13.06.2019 11:56

    Работал когда-то на сервисе показа фильмов. С видео трафиком 100Гбит/с
    Режут качество видео — чтобы клиенты не потратил месячную норму на один фильм. Поэтому редки фильмы с большим битрейтом. LTE это быстро, но тарифы некто не отменял.
    Многие клиенты — мобильные и планшеты. Кеширование на диск не удачно — у них всего гигов по 30 пямяти, а бывает и сильно меньше. Про телевизоры вообще молчу.
    Режут максимальную скорость до 2*битрейт — чтобы человек не тратил трафик зря. Часто смотрят 10 минут начала из 100 минут фильма, а потом смотрят другой фильм/серию.
    P2P раздача видеопотока работает хорошо на трансляциях, и первый день на новинках. В остальных случаях опирайтейсь только на свои сервера.


    1. Master255 Автор
      13.06.2019 12:18

      Многие клиенты — мобильные и планшеты. Кеширование на диск не удачно — у них всего гигов по 30 пямяти, а бывает и сильно меньше.

      16Гб — для YouTube видео достаточно будет. Например, можно совсем убрать прогресс бар на YouTube и понижение качества. 4k Blu-Ray особо не посмотришь, но есть флешки! Пара тысяч рублей и у вас 128Гб в любом девайсе. Это необходимая трата, для просмотра 4k.
      LTE это быстро, но тарифы некто не отменял.
      Безлимитные тарифы (например тут) никто не отменял. Роуминга нету по всей России.


      1. Sovigod
        13.06.2019 12:23

        Пара тысяч рублей и у вас 128Гб в любом девайсе.
        Половина пользователей с большой скоростью это iOS.
        Безлимитные тарифы
        LTE по спекам сделан для возможности комерческих безлимитов. Делается это за счет приоритизации траффика. т.е. чем больше вы качаете — тем меньше у вас приоритет. Это не особо приятно.


        1. Master255 Автор
          13.06.2019 12:34

          Половина пользователей с большой скоростью это iOS.

          А что на iOS отменили флешки или OTG?
          В любом случае конвертация свободного места в скорость передачи данных стоит того.
          Делается это за счет приоритизации траффика. т.е. чем больше вы качаете — тем меньше у вас приоритет.

          Не знал об этом. Значит в моё определение «не стабильный канал» входит и приоритизация трафика. Мне кажется вы просто не верите в магию алгоритмов. Попробуйте, проверьте. Я же не заставляю поверить. В статье полно данных, что бы проверить! Это не религия — это наука!


          1. iddi
            14.06.2019 15:10

            на iOS нет флэшек и OTG, а еще на многих планшетах Android SD карточки на SPI, скорость чтения/записи довольно ограничена. а если он еще и программно реализован…
            в общем иногда 1Мб JPEG секунд 7 грузится с такой карточки


            1. Master255 Автор
              14.06.2019 16:01

              во первых: ru.aliexpress.com/w/wholesale-otg-cable-for-ipad.html
              что-то их очень много и разных.
              во вторых: политика компании Apple, подразумевает периодическое обновление устройств целиком. Не вижу проблем тут. Берёте деньги и покупаете нормальный iphone\ipad\imac. На сколько денег хватило, на столько и купил памяти. На сколько есть памяти, на столько и смотришь качество. Напоминаю, если не смотреть 4k фильмы длительностью 1,5 часа и более, то 16Гб должно хватить. Причём это резко ускорит загрузку контента и увеличит комфорт, даже на самых слабых девайсах!
              У меня небольшие видео 4к, без тормозов на galaxy s3 (2012 года выпуска) показывает.


  1. Gordon01
    13.06.2019 13:07

    Так ведь на ютубе раньше так и было!
    Они от этого ушли, полагаю, потому что большинство не всмотрит видео до конца, а плеер в фоне его уже загрузил. Лишний трафик и нагрузка.


    1. Master255 Автор
      13.06.2019 13:23

      Так вот почему у меня тормозит YouTube!))) Не думаю, что на этом сервисе было когда-то что-то подобное. Раньше не было 4k видео и не было таких скоростей интернета. Не думаю, что YouTube хранил ролики в кеше браузера в массовом порядке, а грузил их в многопоточном режиме. Там всё гораздо проще.
      Да и экономия трафика сомнительная.
      Сейчас я прогружаю трафик 2-3 видео, которое смотрю, если поперематывать в разные части. Да я могу бесконечно трафик расходовать одним видео роликом, просто используя перемотку. Где тут экономия?
      Если я включил видео, то это означает, что я хочу его посмотреть. Желание сервиса меня ограничить в этом, идёт, как-то в разрез назначения сервиса. Что-то пошло не так)))


      1. Firz
        15.06.2019 17:17
        +1

        Экономия трафика очень простая — плеер не кеширует дальше N секунд от текущего места просмотра, чтобы каждый пользователь не начинал грузить с сервера часовое видео, от которого 95% людей только первую минуту просмотрят и закроют. Если Вы перемотали, то, что уже загрузилось, остается, и начинает грузиться новое с того места, где нажали, так же не больше N секунд кеша от этого места.
        Гугл даже несколько лет назад какую-то статистику приводил, когда люди начали удивляться почему все видео сразу не грузится, как до этого. Могу и соврать с точностью, но там была информация, что-то вроде: 50% видео, которые были открыты во вкладках и оставлены загружаться до конца, в итоге просто закрывают, не начав просмотр.


        1. Master255 Автор
          15.06.2019 17:46

          Могу и соврать с точностью, но там была информация, что-то вроде: 50% видео, которые были открыты во вкладках и оставлены загружаться до конца, в итоге просто закрывают, не начав просмотр.

          Но можно же останавливать загружать данные, если вкладка не активная. Думаю несколько лет назад скорости были другие, а сегодня всё поменялось.

          Экономия трафика очень простая — плеер не кеширует дальше N секунд от текущего места просмотра, чтобы каждый пользователь не начинал грузить с сервера часовое видео, от которого 95% людей только первую минуту просмотрят и закроют.

          Не припоминаю, что бы на YouTube я смотрел часовые видео. В среднем это 10 минут, которые весят 200 Мбайт., которые, где бы я не был, загрузятся за 3 секунды, но грузятся все 10 минут, потому что такой алгоритм у YouTube. Все 10 минут они засоряют сеть и мешают другим пользователям.
          Жалеть трафик для пользователей — это жадность, а не оптимизация. 1 минуту смотрю часовое видео, значит оно должно грузиться ко мне одну минуту, даже, если я закрою его. Зато оно будет всего грузится минут 5, а не час, как сейчас на YouTube. И освободит канал полностью, даже при перемотке! Одномоментное получение файла значительно уменьшит служебный трафик и увеличит скорость его получения, вместо того, что бы показать пользователю гигантские пиксели или прогресс загрузки.


          1. Firz
            15.06.2019 17:58
            +1

            Жалеть трафик для пользователей — это жадность, а не оптимизация. 1 минуту смотрю часовое видео, значит оно должно грузиться ко мне одну минуту, даже, если я закрою его. Зато оно будет всего грузится минут 5, а не час, как сейчас на YouTube. И освободит канал полностью, даже при перемотке!

            Может я чего не понимаю, но если Вы написали свой софт и изучали вопрос, то должны понимать какие плюсы в том, что делает тот же YouTube.
            Вы смотрите одну минуту от часового видео, а грузите все видео. А теперь представьте что Вас таких вся планета и тут внезапно оказывается что каналов то на всех уже не хватит, потому что трафика за то же время придется передавать в 60 раз больше, 59/60 из которого еще и лишний мусор, который будет выкинут из кеша после закрытия видео. А теперь представьте что Вы оплачиваете каналы и железо, по которым такие пользователи качают у Вас видео. Какой резон платить в 60 раз больше за канал и в 60 раз больше железа?


            1. Master255 Автор
              15.06.2019 18:15
              -1

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

              А теперь представьте что Вы оплачиваете каналы, по которым такие пользователи качают у Вас видео.

              Не думаю, что Google бедная компания. Там полно денег, что бы не экономить никогда на каналах связи. Если вы об этом.

              потому что трафика за то же время придется передавать в 60 раз больше

              Вот вы правильно говорите: «за то же время». Статья именно про то, как полноценно использовать сеть и компьютер, а не про то, как сэкономить на комфорте несчастных пользователей.
              59/60 из которого еще и лишний мусор, который будет выкинут из кеша после закрытия видео.

              Выкидывать из кеша я не предлагал, как раз наоборот, оставить. Должен быть кеш, примерно 10-16 Гбайт. Вообще, это широко настраиваемый параметр.
              И это не мусор! Это данные, которыми захотел воспользоваться пользователь!


              1. Firz
                15.06.2019 18:41

                Прогрессивная загрузка не только загружает канал, но и освобождает его полностью, что тоже значительно снижает нагрузку на канал.

                Она значительно увеличивает нагрузку на канал, потому что пользователю передается больше данных, чем ему нужно.
                Давайте на пальцах:
                пускай N пользователей в сутки, в среднем смотрят только половину видео(кто-то все, кто-то половину, кто-то пролистал, кто-то только начало), итого 0.5N+0.05N(служебные данные + несколько секунд кеша) общий объем переданного трафика.
                N Ваших пользователей в сутки, так же в среднем смотрят только половину видео, вот только грузят все полностью, N общий объем трафика. Я думаю очевидно что канал только нагружается.

                Не думаю, что Google бедная компания. Там полно денег, что бы не экономить никогда на каналах связи. Если вы об этом.

                Думаю именно по-этому у них и полно денег, что они не разбрасываются ими просто так.


                1. Master255 Автор
                  15.06.2019 19:03
                  -1

                  т.е. по прогрессивному алгоритму передаётся гораздо больше полезных данных, чем без него за тоже время. Именно об этом и статья. Да. Это очень круто и крайне необходимо всем!
                  Ещё подумайте о тех людях у которых интернет будет работать, только первые минуты видео, а потом отключится из-за помех. С прогрессивным алгоритмом посмотрят видео, а без него нет.
                  А, как насчёт прелестей быстрой перемотки? Все уже наверное забыли об этом, как это бывает быстро. А как насчёт воспроизведение видео из интернета вообще без интернета? Из кеша. Там совсем другой мир… мир где очень много мультимедиа данных, а не бюджетный стриминг YouTube в 320p. По моему стыдно смотреть что-то ниже 1080p, при минимальных тарифах на интернет в Москве 250 Мбит\с… А приходится, ведь YouTube решил сэкономить на мне)))! И все остальные за ним.

                  Думаю именно по-этому у них и полно денег, что они не разбрасываются ими просто так.

                  А где вы видели, что оплата идёт за объём трафика? Видео провайдеры платят за скорость каналов, а не объём. Да и какая вообще разница, разговор-то не про стоимость для хостинга, а про комфорт пользователей!
                  Не думаю, что всё так как вы пишите. Если видеохостинг будет платить за объём трафика, то ему не выгодно будет использовать 4k, а что это за хостинг тогда. Пренебрегать комфортом пользователей тоже не стоит.


                  1. lair
                    15.06.2019 19:13

                    С прогрессивным алгоритмом посмотрят видео

                    … на пару минут дольше, чем другие, но все равно не до конца.


                    А как насчёт воспроизведение видео из интернета вообще без интернета?

                    Ну я вот смотрю MasterClass, Coursera, Netflix и Prime Video в самолете. Без интернета.


                    А где вы видели, что оплата идёт за объём трафика?

                    AWS, например: Data Transfer OUT From Amazon EC2 To Internet.


                    Видео провайдеры платят за скорость каналов, а не объём.

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


                  1. Firz
                    15.06.2019 19:38
                    +1

                    т.е. по прогрессивному алгоритму передаётся гораздо больше полезных данных, чем без него за тоже время. Именно об этом и статья. Да. Это очень круто и крайне необходимо всем!

                    Вы уж извините за личное мнение, но похоже на какой-то фанатизм уже, а не диалог.

                    Ещё подумайте о тех людях у которых интернет будет работать, только первые минуты видео, а потом отключится из-за помех. С прогрессивным алгоритмом посмотрят видео, а без него нет.

                    Нажмут кнопку «загрузить в кеш» в том же YouTube, если знают что скоро интернет отключится и видео целиком загрузится на телефон/планшет.

                    А где вы видели, что оплата идёт за объём трафика? Видео провайдеры платят за скорость каналов, а не объём. Да и какая вообще разница, разговор-то не про стоимость для хостинга, а про комфорт пользователей!
                    Не думаю, что всё так как вы пишите. Если видеохостинг будет платить за объём трафика, то ему не выгодно будет использовать 4k, а что это за хостинг тогда. Пренебрегать комфортом пользователей тоже не стоит.

                    Скорость канала, 0.55N в сутки и N в сутки соответственно. Можно разделить на 86400, получится скорость в секунду.


                    1. Master255 Автор
                      15.06.2019 21:26

                      Нажмут кнопку «загрузить в кеш» в том же YouTube, если знают что скоро интернет отключится и видео целиком загрузится на телефон/планшет.

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


  1. saipr
    13.06.2019 15:14

    Сегодня никого не удивить скоростью интернета 100 Мбит\с.

    Сегодня да. А вот к чему привел переход скорости передачи данных с 4 K до 128 К расскажу. Это было в далеких 1977-1978 годах:
    image
    Мы вели наблюдение за космическими объектами, в основном спутниками. И для наведения станций слежения в качестве исходных данных при расчете использовали данные перехваченные с одного из спутников Интелсат. И вот в один из дней мы не смогли получить данные со спутников. Надвигалась катастрофа, мы теряли все спутники и не могли понять в чем дело. На следующей день выяснилось, что информвция со спутников Интелсат стала передаваться на скорости 128K, но приемной аппаратуры у нас не было. И только через неделю нам лоставили соответствующую аппаратуру и жизнь стала налаживаться.


  1. lair
    13.06.2019 21:43

    Как пример работы технологии, я написал мультимедийное приложение Media Library.

    Решил, значит, попробовать. Ставлю. При запуске получаю запрос разрешений на:


    • фотографирование и запись видео
    • запись аудио
    • доступ к моим данным в хранилище

    По моему глубокому убеждению, приложению, которое себя позиционирует как "ergonomic player for home cloud" это все не нужно. Следовательно, оно этих разрешений не получит. А работать без них оно отказывается — вот и закончился тест.


    Битрейт 4k видео большой, но не заоблачный. Самый эффективный кодек VP9 на сегодня сжимает 4k видео в 25 Мбит\сек. с аудио выходит около 30. Blu-Ray фильм в 100 Гбайт имеет битрейт около 60 Мбит\сек… Эти скорости интернета есть у любого в мире, желающего посмотреть 4k видео.

    Ну давайте проверим. МТС, Москва. Упс, меньше трех мегабит. Ладно, подойдем к окну. Десять мегабит. Хм...


    1. Master255 Автор
      13.06.2019 22:30

      :) приветствую! Лично прошу дать разрешения приложению. Оно моё и не несёт никакого вреда. Только пользу! Честное слово.
      На самом деле грозный Гугл не просто проверяет моё приложение, но ещё и тестирует, в момент публикации. Ещё оно весит крайне мало 1,3Мб… Таким образом шансов, даже на одну вредную строчку кода нет.
      Продолжайте тестирование, но помните о том, что для тестирования 4k Blu-Ray кино надо иметь минимум около 23Gb свободного места на внутренней памяти, или внешней, если у вас заработает внешняя память. Тут 2 фильма для тестов. Открывать через приложение с алгоритмами. По описанному в статье сценарию.

      МТС — если не устраивает скорость, то звоните. По звонку и жалобам увеличивают, но это не точно. Что я могу поделать. Если нет связи, то предзакачать можно. В случае с 4k Blu-Ray будет долго, конечно. Но Full HD должно играть без фризов зато! МТС у меня в Москве. Blu-Ray 4k не потянет, а вот VP9 4k тянет! Возможно 1-2 фриза за 4х минутный клип, но в целом очень хорошо. Full HD и Flac без тормозов. Enjoy!


      1. lair
        14.06.2019 00:58

        Лично прошу дать разрешения приложению.

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


        Тут 2 фильма для тестов. Открывать через приложение с алгоритмами.

        Знаете, я просто пошел и открыл их в MPC-HC (LAV Splitter 0.68.1.33), с домашнего компьютера. Проигрались оба, без особых проблем. Тогда я пошел, и открыл их в OPlayer HD с iPad Mini этого года. Первый точно так же играется без проблем, ремукс уже нет.


        По этим пунктам понятно, что стримить, как раньше уже нельзя.

        Тест выше показывает — можно. MPC-HD и LAV у меня сборки 2016 года, с тех пор мне их лень обновлять.


        МТС — если не устраивает скорость, то звоните. По звонку и жалобам увеличивают, но это не точно. Что я могу поделать.

        … может быть, не делать заявлений, которые вы не можете подтвердить?


        МТС у меня в Москве. Blu-Ray 4k не потянет, а вот VP9 4k тянет! Возможно 1-2 фриза за 4х минутный клип, но в целом очень хорошо.

        … а в заголовке написано "как смотреть 4k видео по сети, без фризов" — а у вас на четыре минуты два фриза.


        1. Master255 Автор
          14.06.2019 01:05

          Знаете, я просто пошел и открыл их в MPC-HC

          Так пошёл открыл и «посмотрел 2-3 часа» это совсем разные вещи. Это ещё ночью пока все спят и каналы свободные. А днём канал будет не стабилен и уже не посмотришь без фризов. 2 часа на скорости 60Мбит\с. без перебоев, канал не выдержит. Это будет не смотрибельно. А алгоритм предзагружает весь файл, и канал быстрее освобождается.

          Нет, потому что они не нужны для заявленной им деятельности.

          Там же русским текстом дано объяснение зачем нужны разрешения. Для других функций.
          фотографирование и запись видео — для визуализации вспышкой камеры
          запись аудио — для красивой визуализации на экране.
          доступ к моим данным в хранилище — это именно для сохранения данных в кеш. О чём и написана эта статья.


          1. lair
            14.06.2019 01:06

            Это ещё ночью пока все спят и каналы свободные.

            У меня на этом канале торренты висят, вообще-то.


            А алгоритм предзагружает весь файл, и канал быстрее освобождается.

            Откуда вы знаете, что LAV этого не делает?


            1. Master255 Автор
              14.06.2019 01:17

              Откуда вы знаете, что LAV этого не делает?

              А я очень легко протестил только что. Поставил на паузу и посмотрел, что через сеть в диспетчере ничего не качается. Значит фризам быть.


              1. lair
                14.06.2019 01:27

                … или LAV просто держит в буфере столько, сколько надо для ближайшего просмотра (ну и насколько ему вообще дали буфер). Что, кстати, хорошо видно по тому, что после снятия с паузы проигрывание начинается мгновенно.


                Но суть-то не в этом, а в том, что… просто работает.


                1. Master255 Автор
                  14.06.2019 12:32

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


          1. lair
            14.06.2019 01:29

            фотографирование и запись видео — для визуализации вспышкой камеры
            запись аудио — для красивой визуализации на экране.

            Мне не нужно ни то, ни другое.


            доступ к моим данным в хранилище — это именно для сохранения данных в кеш.

            Вообще-то, приложения на андроиде прекрасно могут писать в свой кэш без запроса доступа к данным пользователя:


            your app does not require any system permissions to read and write to the internal directories returned by these methods


  1. Shpiler
    13.06.2019 23:33

    А из этого можно сделать воспроизведение с, IP h265/264 камеры с задержкой <200мс?


    1. Master255 Автор
      13.06.2019 23:56

      Возможно. Надо тестировать. Моё приложение не рассчитано для камер. Не знаю даже, что будет. Наверное ничего, потому что там очень много завязано на размер файла. Стриминг не имеет размера… так что не пойдёт. Но вот 100 Гигов, если надо посмотреть по сети, так это запросто! :)


  1. Ovsiannikov
    14.06.2019 19:56

    Вы в качестве сервера использовали виндовс?
    Мне почему-то кажется что вы решали проблемы устаревшей реализации тср. Пробовали принимать с линукс сервера с подкрученым алгоритмом cognestion control ?


    1. Master255 Автор
      14.06.2019 22:24
      -1

      почитал про cognestion control алгоритм. Так ничего и не понял, даже по этой ссылке. Что конкретно они оценивают, по каким формулам. Доступным языком.

      У меня не было проблем с плавающей скоростью. Были проблемы со скоростью передачи файла, не соответствующей размеру канала. Т.е. канал 500 Мбит.\с., а скорость максимум 100 Мбит.\с… Такая проблема до сих пор имеется с Samba протоколом. Передача данных идёт через сокеты. И там есть интересный параметр ReceiveBufferSize в сокете у клиента. Он динамически меняется при получении данных. Как я понял это значение зависит от сервера и это значение совпадает с тактом, который обязательно нужно принять без перерывов. Именно это количество байт я храню в оперативной памяти, а затем записываю на диск. Об этом и статья :)
      И с тех пор, как я использую прогрессивный стриминг у меня нет проблем со скоростью. Абсолютно никаких. Ни по wi-fi 700Мбит.\с., ни по 4G.


  1. avengerweb
    15.06.2019 09:44
    +1

    Я видимо отстал от жизни, но что за панацея смотреть 4K видео на 7 дюймовом экране? Ну а 8К? Реально ли заметна разница?


    1. Master255 Автор
      15.06.2019 11:41

      Конечно, вы всё не правильно поняли. Во-первых, смысл смотреть 4k-8k на телефонах не в том, что бы смотреть это в телефоне, а в том, чтобы передавать изображение по hdmi на большой 4k экран и смотреть.
      Во-вторых, тут никто не говорит, что можно смотреть, только на телефоне. У меня приложение работает на телевизоре Sony. Он большой и 4k смотреть очень увлекательно.
      В третьих, существует не гласная проблема в каком формате хранить контент. Например компания YouTube хранит каждое видео в 5 разных разрешениях, что существенно увеличивает объём. Некоторые хранят видео чанками — кусками. Вместо одного файла у них тысяча. Это тоже очень усложняет хранение и использование данных.
      Далее есть проблема в том, что многие песни существуют только в видео формате. Их никогда не выпускали в аудио. Причём над видео работала команда профессионалов и если вырезать из него звук, то мы потеряем много интересного. Средний битрейт Full HD видео, лишь немного выше битрейта Flac для которого достаточно 5 Мбит.\с…
      Теперь, с приходом новых технологий и алгоритма прогрессивного стриминга эти все проблемы решаются, и можно от всего этого отказаться. Хранить видео или аудио в оригинальном качестве и легко смотреть на любом устройстве.
      Ну а про стриминг 4k-8k можно забыть, если не использовать прогрессивный стриминг. Будем вечно смотреть ролики на YouTube :))


      1. lair
        15.06.2019 13:50

        Например компания YouTube хранит каждое видео в 5 разных разрешениях, что существенно увеличивает объём. [...] Теперь, с приходом новых технологий и алгоритма прогрессивного стриминга эти все проблемы решаются, и можно от всего этого отказаться. Хранить видео или аудио в оригинальном качестве и легко смотреть на любом устройстве.

        Правда можно? А что делать людям, которые хотят посмотреть видео по слабому мобильному каналу, и их низкое качество вполне устроит? Или вот YouTube может не хотеть расходовать свой исходящий трафик ради стриминга 4K-контента на устройство, которое не собирается его показывать, что в этом случае делать?


        Очень легко мыслить в терминах только своих сценариев использования. Но у поставщика услуг — очень крупного поставщика услуг — сценариев использования намного больше, и решения их, как следствие, намного разнообразнее.


        1. Master255 Автор
          15.06.2019 14:56
          -2

          Lair, напоминаю, это ваш последний вопрос. Больше я вам не отвечу по этой статье. Слишком у вас хейтерские и не профессиональные вопросы, не относящиеся к теме.

          А что делать людям, которые хотят посмотреть видео по слабому мобильному каналу, и их низкое качество вполне устроит?

          Где вы нашли слабые мобильные каналы??? Только что посмотрел тарифы мтс и там нигде не пишут об ограничениях скорости. В любой деревне России есть сейчас 5-10 Мбит 2G-3G интернет. А 10 Мбит\с. — это уже Full HD без тормозов!!! Вы просто привыкли, что если скорость 10 Мбит.\с., то 480p и 720p показывает, а на самом деле должно 1080p показывать, но не показывает, потому что сайт с видео сэкономил на программистах и не использует правильно алгоритмы передачи данных. О чём и статья!
          Кроме этого в мультипоточном режиме, даже слабый канал используется на максимуме своих возможностей, тогда, как обычный стриминг заоптимизирован так, что работает против загрузки данных и не грузит данные, когда они так нужны. И постоянно грузит данные при перемотке, что бесконечно увеличивает трафик с одного видео. Возможно поэтому сотовые операторы иногда исключают из тарификации YouTube, ведь один видеоролик может расходовать бесконечно трафик! По моему это абсурд))
          Прогрессивным алгоритмом 1080p видео 11 минут 200 Мбайт грузится секунды за 3 на моём домашнем wi-fi. А алгоритмом YouTube оно грузится все 11 минут, пока я его смотрю. + при перемотке грузится второй и третий раз. За что платят пользователи лимитного трафика??? Так это ещё значительно увеличивает нагрузку на сети.
          Технология тестировалась на galaxy s3 2012 г.в… Так что сегодня все устройства будут работать быстрее с этим алгоритмом.
          Или вот YouTube может не хотеть расходовать свой исходящий трафик ради стриминга 4K-контента на устройство, которое не собирается его показывать, что в этом случае делать?

          Если YouTube не хочет расходовать свой исходящий трафик на устройство, которое не собирается его показывать, то пусть не расходует! Можно же остановить закачку (потоки), если вкладка не активна или приложение свёрнуто. А вот если это невозможно определить, то он обязательно должен думать, что видео воспроизводится и использовать прогрессивный стриминг.
          Сейчас он действует в каких-то своих интересах, а не в интересах пользователей.
          Но у поставщика услуг — очень крупного поставщика услуг

          У него просто много денег. И не надо мне рассказывать, как там всё устроено.


          1. lair
            15.06.2019 15:29

            Где вы нашли слабые мобильные каналы?

            А вот прямо там, откуда вам комментарий пишу.


            3.58Mbps


            1. Master255 Автор
              15.06.2019 15:48
              -1

              Читайте статью. Там есть таблица средних скоростей интернета в мире. На них надо рассчитывать. А если захотелось посмотреть 4k через канал в 3 Мбит\с., то надо второе видео сделать с пониженным качеством 1080p. (3-5 Мбит.\с.) и проблемы исчезнут. Со временем, с повышением минимальной скорости интернета нужно отказаться от «вторых» видео, как от атавизма.


              1. lair
                15.06.2019 15:50

                Там есть таблица средних скоростей интернета в мире. На них надо рассчитывать.

                Кому? Тому, кто хочет доставлять свой контент всем пользователям, а не только тем, у которых скорость "средняя и выше"?


                А если захотелось посмотреть 4k через канал в 3 Мбит\с., то надо второе видео сделать с пониженным качеством 1080p. (3-5 Мбит.\с.) и проблемы исчезнут.

                Дадада, всего двумя комментами выше:


                Например компания YouTube хранит каждое видео в 5 разных разрешениях, что существенно увеличивает объём. [...] Теперь, с приходом новых технологий и алгоритма прогрессивного стриминга эти все проблемы решаются, и можно от всего этого отказаться. Хранить видео или аудио в оригинальном качестве и легко смотреть на любом устройстве.

                А теперь выяснили, что все-таки нет, нельзя отказаться.


                1. Master255 Автор
                  15.06.2019 16:05
                  -1

                  Да, действительно. Я забыл про эту тонкость. Но второе видео — это чистый атавизм.
                  Заметьте не 340p и не 480p и, даже, не 720p, а именно 1080p. Одно дополнительное видео, а не 5.
                  Когда 4k контент будет использоваться повсеместно, то минимальные скорости уже подрастут и можно будет отказаться от запасного Full HD видео.
                  Надеюсь ответил на ваш последний вопрос. Спасибо.


                  1. lair
                    15.06.2019 16:14

                    Хотеть смотреть видео на канале 3 Мбит\с. не справедливо.

                    Ничего несправедливого. Я могу это делать сейчас, я хочу продолжать это делать в будущем.


                    Заметьте не 340p и не 480p и, даже, не 720p, а именно 1080p. Одно дополнительное видео, а не 5.

                    Это если гарантировать, что 1080p проигрывается везде, что, очевидно, не так. Чем больше пользователей мы хотим охватить, тем больше вариантов видео нам надо уметь отдавать.


                    Когда 4k контент будет использоваться повсеместно, то минимальные скорости уже подрастут и можно будет отказаться от запасного Full HD видео.

                    Когда "минимальные скорости подрастут", никакой "прогрессивный стриминг" не будет нужен — собственно, как я писал в своем первом комментарии, у меня и сейчас без него прекрасно работает. 26 Gb MKV на FireTV Stick 4K по самбе поверх 100Мбит? пожалуйста, вот оно.


                    1. Master255 Автор
                      15.06.2019 16:26

                      Это если гарантировать, что 1080p проигрывается везде, что, очевидно, не так.

                      А где не проигрывается?


                      1. lair
                        15.06.2019 16:43

                        А где не проигрывается?

                        Там, где скорость сети ниже определенной, очевидно. Возьмем какой-нибудь 1080p. 8716 Mb, 5620 с. Приблизительно 1.55 MB/с, или 12.4 Mbps без учета накладных расходов (MPC-HC говорит "Overall bit rate: 13.0 Mb/s", спишем на погрешность).


                        Очевидно, что на 3 мегабитах оно играть не будет никогда (ну точнее, нам надо будет подождать в четыре-пять раз дольше, чем идет сам фильм, что противоречит самой идее "смотреть видео по сети"). Более того, оно и на 10 мегабитах играть не будет, если вы не сделаете ощутимую предзакачку (привет, кстати, вашему "10 Мбит\с. — это уже Full HD без тормозов").


                        А у меня там рядом еще можно найти файл с 28 Mbps (и это 1080p, и это не ремукс), который, если я ничего не путаю, даже в теоретические пределы 3G уже не влезает.


                        1. Master255 Автор
                          15.06.2019 16:54
                          -1

                          Возьмем какой-нибудь 1080p. 8716 Mb, 5620 с. Приблизительно 1.55 MB/с, или 12.4 Mbps без учета накладных расходов

                          Вы не путайте VP9 который использует YouTube и ваши видео. Посмотрите сколько весят Full HD 1080p видео на YouTube. Там битрейт 3 Мбита\с. Кодеки AVC и VP9 творят чудеса. Слышал, есть уже лучше кодеки. Так что чудес будет ещё больше.
                          Всё видео, которое вы загружаете на YouTube перекодируется именно в эти чудесные форматы.
                          4k VP9 сжимает до 15 Мбит\сек. + аудио 128 Кбит.\сек… Чудеса, не правда ли?)))
                          Ну что поделать, это прогресс. Просвещайтесь!

                          п.с.: вполне ожидаемо 8k это будет 65-70 Мбит\сек… Могу ошибаться. Но это всё равно вписывается в мою любимую фразу «100 Мбит хватит всем».


                          1. lair
                            15.06.2019 17:01

                            Всё видео, которое вы загружаете на YouTube перекодируется именно в эти чудесные форматы.

                            Вот поэтому я никогда не смотрю видео с YouTube, если у меня есть выбор.


                            Чудеса, не правда ли?

                            Да нет, никаких чудес, обычное сжатие с потерей информации. Вопрос в том, нужно ли пользователю такое 4K, или, на самом деле, он не отличит его (в слепом тесте, конечно же) от 1080p с тем же (или даже более низким) битрейтом.


                            1. Master255 Автор
                              15.06.2019 17:05

                              Речь про второе, дублирующее видео(прогрессивного стриминга), для тех у кого низкая скорость интернета, а не про YouTube.


                              1. lair
                                15.06.2019 17:12

                                Речь про второе видео, для тех у кого низкая скорость интернета, а не про YouTube.

                                Ну так не приводите YouTube в пример тогда (btw, видео с YouTube, что 1080p, что 4K у меня в домашней сети проигрываются без проблем, что тоже кое о чем говорит).


                                Понимаете ли, в том-то и дело, что если вы ужмете 1080p так, чтобы оно влезало в 3 Mbps, пользователь не отличит его от 720p (а то и 480p), и какой тогда смысл говорить "1080p"? При этом пользователь, у которого 10Mbps вполне мог бы смотреть видео качеством лучше, но опять не может (и с возмущением уходит с сервиса). Именно поэтому стриминговые сервисы отдают не одно, и не два "качества" (другое дело, что совершенно не факт, что они хранят все эти качества, а не делают транскод на ходу, но это сейчас не имеет особого значения).


                                1. Master255 Автор
                                  15.06.2019 17:25
                                  -1

                                  ууу. Не думал, что у вас такие пробелы в знаниях.
                                  Просвещу: Хранят в качествах. Т.е. всё что ниже Full HD на YouTube ориентировано на каналы меньшие, чем 3 Мбит.\сек. Выходит нужно два видео: основное оригинальное и второе Full HD 3 Мбит\сек.
                                  Вот вам скриптик, что бы получить ссылки на все видео YouTube. Выполнять в консоли js в браузере, после прогрузки страницы с видео. Переключитесь в режим разработчика.

                                  const videoUrls = ytplayer.config.args.adaptive_fmts
                                    .split(',')
                                    .map(item => item
                                      .split('&')
                                      .reduce((prev, curr) => (curr = curr.split('='),
                                        Object.assign(prev, {[curr[0]]: decodeURIComponent(curr[1])})
                                      ), {})
                                    )
                                    .reduce((prev, curr) => Object.assign(prev, {
                                      [curr.quality_label || curr.type]: curr
                                    }), {});
                                  console.log(videoUrls);


                                  1. lair
                                    15.06.2019 17:36

                                    всё что ниже Full HD на YouTube ориентировано на каналы меньшие, чем 3 Мбит.\сек.

                                    И что с того? Оно все равно ориентировано на разные каналы, а вы предлагаете для всех делать одинаковое.


                                    Выходит нужно два видео: основное оригинальное и второе Full HD 3 Мбит\сек.

                                    Неа, не выходит. Что, если у меня канал 10 Мбит, и я хочу видео в том качестве, которое позволяет этот канал?


                                    Тот же Netflix делает битрейты от 100Kbps до 16Mbps.


                                    1. Master255 Автор
                                      15.06.2019 17:50
                                      -1

                                      перечитайте статью и поставьте лайки. Вижу интересные вопросы у вас закончились. Вам, как человеку со скоростью 3 Мбит\сек. необходим этот алгоритм. Так вы будете получать хоть какой-то контент. Спасибо за внимание.


                                      1. lair
                                        15.06.2019 17:53

                                        Вам, как человеку со скоростью 3 Мбит\сек. необходим этот алгоритм.

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


          1. avengerweb
            15.06.2019 22:57

            Где вы нашли слабые мобильные каналы???

            Я вот к примеру в Калифорнии живу, если вам хочется узнать подробнее про слабые мобильные каналы, то почитайте про местный мобильный интернет. :)

            Любой другой «домашний» интернет по большей части быстрый, если не брать самый дешевый тариф, то как правило второй по цене тариф уже переплевывает планку в 100мб/с. Так что, скорости достаточно для спокойного просмотра 4К, в основном вы пытаетесь решить проблему дешового hardware, когда ваш роутер не может стабильно удерживать несколько девайсов (wifi) на нормальной скорости, обычно решается покупкой нормального роутера, что для обладателя 4К телека не такая уж и большая трата.


            1. Master255 Автор
              16.06.2019 00:14

              Вот это поворот!
              Совсем недавно мне жаловались на малые скорости интернета, а теперь 100 Мбит.\с…
              И это тоже интересный момент! Тут есть ньюансы.
              Ну например, дубль трафика. Плееры так устроены, что сначала они читают файл и узнают кодеки и форматы, а затем начинают читать теже самые данные при воспроизведении. Кеширование с первого байта устраняет эту проблему и значительно ускоряет старт воспроизведения.
              Перемотка с кешем, только ускоряет скачивание всего файла и повторная перемотка происходит максимально быстро за счёт того, что данные не грузятся второй раз, а берутся с диска.
              Если скорость канала превышает скорость битрейта видео, то загрузка видео происходит с опережением. 10 минут фильма и весь файл загружен и вашему просмотру уже точно ничего не помешает.
              У меня дома 200 Мбит интернет и Full HD заикается периодически, регулярно. И YouTube грузит и заикается, хотя техника работает стабильно. Большой телевизор, хороший фильм и бац на самом интересном фриз. Сразу все начинают возмущаться. И правильно. Интернет прерывается в течение дня. Разные сервисы прерывают свою работу по разным причинам. Прогрессивный стриминг полностью устраняет эту проблему.
              Телевизор Sony напрямую обращается к жёсткому диску по сети Wi-Fi 460 Мбит\с… И так уж устроена техника, но телевизор не может без постоянных фризов воспроизвести 4k 100 Гбайт Blu-Ray фильм с этого диска. Странно, но факт. Прогрессивный стриминг просто грузит данные. Как мощный локомотив, не зная про фризы.
              В общем, если у вас дешёвые девайсы 10ти летней давности, то вам нужен прогрессивный стриминг.
              А вот если у вас современные девайсы с мега скоростями и кучей памяти, то прогрессивный стриминг вам просто необходим!
              Современные телефоны, как раз имеют минимум 128 Гб. памяти, что позволяет кешировать и воспроизводить Blu-Ray 4k фильмы по 100Гб…


              1. lair
                16.06.2019 00:25

                Совсем недавно мне жаловались на малые скорости интернета, а теперь 100 Мбит.\с

                А вот не надо путать. Вам писали про скорости мобильного интернета, а здесь пишут про домашний.


                Телевизор Sony напрямую обращается к жёсткому диску по сети Wi-Fi 460 Мбит\с… И так уж устроена техника, но телевизор не может без постоянных фризов воспроизвести 4k 100 Гбайт Blu-Ray фильм с этого диска.

                Сочувствую вам. У меня банальный FireTV Stick 4K, воткнутый в 100-мегабитный провод, прекрасно все показывает. Нет, врать не буду, 4K Bluray на 100Gb нету. Есть на 36.


                А вот если у вас современные девайсы с мега скоростями и кучей памяти, то прогрессивный стриминг вам просто необходим!

                Не, у меня и без него все прекрасно работает.


                Современные телефоны, как раз имеют минимум 128 Гб. памяти, что позволяет кешировать и воспроизводить Blu-Ray 4k фильмы по 100Гб…

                Я одного не понимаю: на телефоне-то зачем это делать, если мне все равно не на телефоне его смотреть?


    1. Master255 Автор
      15.06.2019 12:17

      На YouTube смотрел 8k на 4k телевизоре. Да, разница есть с 4k, даже на 4k экране.