Попробовать
← Назад к блогу

Почему стриминговые видео не скачиваются: сегменты, blob, временные ссылки

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

Корень проблемы: стриминговое видео никогда не было единым файлом

Суть стриминга — «воспроизведение во время загрузки»: видео нарезано на небольшие сегменты по несколько секунд, они передаются по одному обычными веб-запросами, а плеер собирает их в реальном времени — готового большого файла для скачивания просто нет.

Согласно официальной документации для разработчиков Apple, протокол HLS нарезает видео на сегменты по несколько секунд и раздает их по HTTP по одному — это же лежит в основе огромного числа видеоплатформ. «Одно видео», которое вы видите в плеере, — это на деле сотни сегментов, бесшовно собранных в порядке плейлиста:

  • Файл плейлиста (например, m3u8) хранит адрес и порядок каждого сегмента;
  • Плеер вытягивает сегменты по порядку, декодирует и проигрывает;
  • Загрузчик ищет «один целый видеофайл» и, естественно, не находит ничего.

Это самая частая причина «видео не обнаружено»: дело не в том, что видео спрятано глубоко, — этого файла на странице просто нет. Инструментальный разбор мы уже давали в статье что делать, если загрузчик видео не работает, повторять не будем.

Что такое blob-ссылка: почему «скопировать адрес видео» не работает

Адрес видео, скопированный правой кнопкой, часто оказывается ссылкой в памяти, начинающейся с blob:, — она не указывает ни на какой файл на сервере.

Согласно официальной документации MDN, blob-ссылка — это одноразовая ссылка на данные в памяти: плеер загружает сегменты в память и собирает их в реальном времени, а собранный результат отдает тегу воспроизведения под адресом в памяти. Это значит:

  • адрес действует только на текущей странице — обновите или закройте ее, и его больше нет;
  • отправьте другу или на другое устройство — не откроется;
  • каким загрузчиком ни разбирай этот адрес, результат один.

Частое заблуждение: «есть адрес — есть видео». Адрес blob — лишь закладка в памяти, а не сам файл; закладка бесполезна, когда она вырвана из своей книги.

Временные ссылки и адаптивный битрейт: адрес есть — видео нет

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

  • Временные подписи: адреса плейлистов, которые платформы выдают плееру, чаще всего подписаны и имеют срок жизни — от минут до нескольких часов, — и по истечении доступ отрезается мгновенно. Скопируйте адрес другу — он получит только ошибку.
  • Адаптивный битрейт: протоколы вроде MPEG-DASH (международный стандарт, определенный в ISO/IEC 23009-1) собирают одно и то же видео в десяток с лишним уровней качества плюс несколько аудиодорожек, и плеер меняет уровень от сегмента к сегменту в зависимости от вашего канала в данный момент. Статическое перехватывание чаще всего ловит лишь кусочек одного уровня; через секунды уровень сменится — и захваченное уже не то.
  • Барьер сборки: даже собрав все сегменты, их нужно слить в порядке плейлиста и синхронизировать звук с картинкой — это плеер делает в реальном времени, вручную это почти невыполнимо.

Поэтому «инструменты анализа адресов» против стриминга почти бессильны: плейлист они найдут, но не пройдут три рубежа — устаревание, смену уровня, сборку.

Уровни стриминга, блокирующие загрузчики

Третий замок: сегменты защищенного контента зашифрованы

Механизмы выше объясняют «файла не найти», но у видео подписных платформ есть еще один уровень: сами сегменты зашифрованы — скачанные, они все равно не воспроизведутся.

Эту машину шифрования и лицензирования мы детально разбирали в прошлом техническом материале; здесь только вывод: данные сегментов зашифрованы, а ключ расшифровки выдается лишь временно во время воспроизведения и привязан к текущему устройству — скачанные сегменты не откроются, а прямая запись программой захвата экрана при сильной защите даст черную картинку (о причинах черного экрана и способах справиться смотрите наш гайд по исправлению черного экрана). Видео подписных платформ вроде OnlyFans и Fansly по большей части относятся именно к этому случаю: воспроизводится, но не сохраняется — это не поломка, так задумано.

Разные потоки — разные способы сохранения

Способ сохранения следует за механизмом: отдельный файл — прямое скачивание, сегментированный поток и защищенный контент — запись; настольный видеобраузер покрывает и то и другое.

С VidBrowser это четыре шага:

Шаг 1: Скачайте и установите VidBrowser

VidBrowser — настольный видеобраузер для Windows и Mac для просмотра видео, вырезки моментов и сохранения их локально, со встроенной загрузкой и записью. Установка занимает несколько минут.

Шаг 2: Откройте страницу с видео в VidBrowser и воспроизведите

Запустите VidBrowser, зайдите на сайт с видео (при необходимости войдите в аккаунт) и запустите видео, которое хотите сохранить.

Шаг 3: Если скачивается напрямую — используйте кнопку загрузки

VidBrowser автоматически обнаруживает видеоресурсы на странице; найдя скачиваемый отдельный файл, он покажет его в панели «Медиатека видео» справа — нажмите оранжевую кнопку «Скачать», чтобы сохранить в MP4 (разрешение можно выбрать заранее в выпадающем фильтре).

Шаг 4: Если не скачивается — сохраняйте записью

У сегментированных потоков нет отдельного файла, защищенный контент целиком не перехватить — для обоих случаев используется запись: наведите курсор на видео, появятся элементы управления записью; выберите скорость (1x в реальном времени или 2x/4x, чтобы закончить быстрее), нажмите «Записать всё» для захвата видео целиком, а кнопка записи слева ставит на паузу в любой момент. Записанное видео сохраняется в том качестве, которое страница реально воспроизводит, и открывается офлайн в любом плеере. (Полный процесс «скачивание плюс запись» — в нашем гайде по записи и скачиванию.)

FAQ

Почему одни видео скачиваются в один клик, а другие никак?

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

Можно ли поделиться с кем-то перехваченным адресом m3u8?

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

Какого качества получается запись?

Запись сохраняет в том качестве, которое страница реально воспроизводит, — какой уровень отдан, такой и записан. Хотите выше — вручную переключите плеер на максимальный уровень перед записью.

Еще статьи