Как скачать видео с URL «blob:»
Нередко в последнее время нередко встречается ситуация, когда хочется сохранить себе видео какого-либо курса или подкаста. Для известных хостингов видео, типа «Ютьба» или «Вконтакта» существуют плагины браузера, которые справляются с этой задачей, а с менее известными площадками могут возникать проблемы.
Бывает, что в теге проигрывания видео (который легко найти при помощи «Инструментов разработчика» браузера) указан файл, который можно скачать, но иногда там применяется протокол blob: и с ним не настолько всё просто.
К счастью, есть способ скачать и такое видео, но он требует кое-каких специальных знаний.
Нужно открыть «Инструмент разработчика» на вкладке «Сеть» («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 сделает всё сама.
M3U это «мпег-плейлист», старинный формат из девяностых. Как бы неудивительно, что ffmpeg знает, что с ним делать, он ему родной. Но секрета в нём никакого нет, тот же винамп ещё с самых первых версий его юзал.
M3U8 — то же самое, но в кодировке utf8.
Всё описанное не тайное знание, конечно.
Браузеры используют формат extended M3U (где вводятся дополнительные директивы, начинающиеся с символа комментария), расширенный директивами для стриминга видео (описаны в RFC 8216, «HTTP Live Streaming»).
Неудивительно, что ffmpeg умеет читать формат HTTP Live Streaming, но девяностые тут не причём — он появился около десяти лет назад (и стал стандартом всего три года как).
Неправда. M3U появился в 1996 году. Но он изначально был расширяемым (типа как XML), а стандартного набора тегов как такового никогда не было. Любой вендор волен выбирать своё подмножество.
10 лет назад в него просто добавили очередной набор новых тегов для стриминга по HTTP (конкретно Apple постарались, если не путаю), а три года назад их наконец-таки сподобились упомянуть в соответствующем RFC.
Причём тут M3U? Я про HLS пишу, там же с этого предложение начитается)
В диалоге с Евгением иногда довольно трудно удерживаться от фэйлспалма...
В HLS используется древний и отлично известный формат плейлистов M3U. Чтобы с ним работать, специальных знаний не нужно, нужна любая программа, которая умеет его читать, это же совершенно очевидно.
Что я и пытаюсь сказать разными словами третий раз.
Алло, приём. Меня всё ещё непонятно?
У меня те же чувства. Попробую объяснить ещё раз.
Ffmpeg, кмк, понимает этот формат как раз из-за появления HLS, а не потому, что это старый формат. Кроме того, это не тот же формат, что в 90-е, он был расширен. Всё что понимает какой-то M3U, не обязательно сумеет правильно скачать стриминговое видео.
Спасибо большое за подсказку про ffmpeg. Сам сталкивался несколько раз с необходимостью скачать видео из такого «плейлиста», но мне это давалось с большим трудом, а воспользоваться ffmpeg не пришло в голову.
Евгений, рекомендую YouTube-dl.Из названия неочевидно, но он поддерживает кучу других сайтов кроме самого ютуба, срабатывает для меня почти всегда.
Попробую, когда будет случай, спасибо!
А теперь по человечьи. Я зашёл в винду, открыл сайт и нашёл нужное видео, нашёл адрес плейлиста м3у8 в сетевой вкладке(в инструментах, а не в адресной строке, эту часть я понел). У меня есть ссылка, есть открытый браузер в виндоус. Мои действия?
Шаг 1: поставить другую операционную систему.
Вероятно надо сразу отдать в ffmpeg урл index*.m3u8, а не этот master.m3u8, просто пример «легкий» попался? :-)
В win7-10 нормально всё работает в командной строке.
Спасибо.
-далее можно не читать, возможно ошибочное мнение-
А кстати в youtube тоже попадается потоковое видео, не только файлы лежат на серверах. Для файлов писал на vbs утилитку, которая собирала в локальный htm информацию по введённую в адресную строку ссылку на медиа, всякую информацию: превью и описание, урлы и инфо о кодеках, на все возможные закачки по ссылке, что-то по типу «ssyotube» получилось. Это не сложно оказалось, практиковался в изучении vbs (извините, не по теме).
Вот тогда и столкнулся с вебинарами (в основном), которые оказались в формате потока. Их кажется скачивал проигрывая с захватом в файл из плеера VCL, не знал тогда о ffmpeg, увы.
Урл master — один, а index* — много, это видно на скриншоте во внутренностях файла master.