Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Как скачать видео с URL «blob:»

Нередко в последнее время нередко встречается ситуация, когда хочется сохранить себе видео какого-либо курса или подкаста. Для известных хостингов видео, типа «Ютьба» или «Вконтакта» существуют плагины браузера, которые справляются с этой задачей, а с менее известными площадками могут возникать проблемы.

Бывает, что в теге проигрывания видео (который легко найти при помощи «Инструментов разработчика» браузера) указан файл, который можно скачать, но иногда там применяется протокол blob: и с ним не настолько всё просто.

Пример окна «Инструментов разработчика» с найденным файлом с расширением «m3u8»

К счастью, есть способ скачать и такое видео, но он требует кое-каких специальных знаний.

Нужно открыть «Инструмент разработчика» на вкладке «Сеть» («Network»), запустить проигрывание видео и поискать в перехваченных урлах первый, который заканчивается на m3u8.

Этот урл надо скормить известной утилите для работе с видео ffmpeg:

ffmpeg -i 'https://example.org/master.m3u8' -c copy -bsf:a aac_adtstoasc ~/Downloads/output.mp4

Где https:​//example.org/master.m3u8 — перехваченный урл, а ~/Downloads/output.mp4 — файл, куда нужно будет сохранить искомое видео.

После этого остаётся только ждать, утилита ffmpeg сделает всё сама.

Ctrl →NAS
7 комментариев
PastorGL 2021

M3U это «мпег-плейлист», старинный формат из девяностых. Как бы неудивительно, что ffmpeg знает, что с ним делать, он ему родной. Но секрета в нём никакого нет, тот же винамп ещё с самых первых версий его юзал.

M3U8 — то же самое, но в кодировке utf8.

Евгений Степанищев 2021

Всё описанное не тайное знание, конечно.

Браузеры используют формат extended M3U (где вводятся дополнительные директивы, начинающиеся с символа комментария), расширенный директивами для стриминга видео (описаны в RFC 8216, «HTTP Live Streaming»).

Неудивительно, что ffmpeg умеет читать формат HTTP Live Streaming, но девяностые тут не причём — он появился около десяти лет назад (и стал стандартом всего три года как).

PastorGL 2021

появился около десяти лет назад (и стал стандартом всего три года как)

Неправда. M3U появился в 1996 году. Но он изначально был расширяемым (типа как XML), а стандартного набора тегов как такового никогда не было. Любой вендор волен выбирать своё подмножество.

10 лет назад в него просто добавили очередной набор новых тегов для стриминга по HTTP (конкретно Apple постарались, если не путаю), а три года назад их наконец-таки сподобились упомянуть в соответствующем RFC.

Евгений Степанищев 2021

Причём тут M3U? Я про HLS пишу, там же с этого предложение начитается)

PastorGL 2021

В диалоге с Евгением иногда довольно трудно удерживаться от фэйлспалма...

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

Что я и пытаюсь сказать разными словами третий раз.

Алло, приём. Меня всё ещё непонятно?

Евгений Степанищев 2021

У меня те же чувства. Попробую объяснить ещё раз.

Ffmpeg, кмк, понимает этот формат как раз из-за появления HLS, а не потому, что это старый формат. Кроме того, это не тот же формат, что в 90-е, он был расширен. Всё что понимает какой-то M3U, не обязательно сумеет правильно скачать стриминговое видео.

Den Talalá 2021

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

Василий 2021

Евгений, рекомендую YouTube-dl.Из названия неочевидно, но он поддерживает кучу других сайтов кроме самого ютуба, срабатывает для меня почти всегда.

Евгений Степанищев 2021

Попробую, когда будет случай, спасибо!

Неигор 2021

А теперь по человечьи. Я зашёл в винду, открыл сайт и нашёл нужное видео, нашёл адрес плейлиста м3у8 в сетевой вкладке(в инструментах, а не в адресной строке, эту часть я понел). У меня есть ссылка, есть открытый браузер в виндоус. Мои действия?

Евгений Степанищев 2021

Шаг 1: поставить другую операционную систему.

Виктор Шугаров 1 год

Вероятно надо сразу отдать в ffmpeg урл index*.m3u8, а не этот master.m3u8, просто пример «легкий» попался? :-)
В win7-10 нормально всё работает в командной строке.

Спасибо.

-далее можно не читать, возможно ошибочное мнение-
А кстати в youtube тоже попадается потоковое видео, не только файлы лежат на серверах. Для файлов писал на vbs утилитку, которая собирала в локальный htm информацию по введённую в адресную строку ссылку на медиа, всякую информацию: превью и описание, урлы и инфо о кодеках, на все возможные закачки по ссылке, что-то по типу «ssyotube» получилось. Это не сложно оказалось, практиковался в изучении vbs (извините, не по теме).
Вот тогда и столкнулся с вебинарами (в основном), которые оказались в формате потока. Их кажется скачивал проигрывая с захватом в файл из плеера VCL, не знал тогда о ffmpeg, увы.

Евгений Степанищев 1 год

Вероятно надо сразу отдать в ffmpeg урл index*.m3u8, а не этот master.m3u8…

Урл master — один, а index* — много, это видно на скриншоте во внутренностях файла master.