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

Далее я попробовал подставить эту ссылку в адресную строку браузера и в результате скачался файл master.m3u8 следующего содержания:
#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=768000,CODECS="mp4a.40.2, avc1.640028",RESOLUTION=640x360 https://vh-04.getcourse.ru/player/89cc32eeb182080b719abfc7f106aaaf/5b7008b4e8fab9852419a5c00e4aa618/media/360.m3u8?sid=sid&host=vh-04&cdn=1&cdn-second=0&integros-s3=1&akamai-defence=0&v=2:0:1:1 #EXT-X-STREAM-INF:BANDWIDTH=1024000,CODECS="mp4a.40.2, avc1.640028",RESOLUTION=853x480 https://vh-04.getcourse.ru/player/89cc32eeb182080b719abfc7f106aaaf/5b7008b4e8fab9852419a5c00e4aa618/media/480.m3u8?sid=sid&host=vh-04&cdn=1&cdn-second=0&integros-s3=1&akamai-defence=0&v=2:0:1:1 #EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="mp4a.40.2, avc1.640028",RESOLUTION=1280x720 https://vh-04.getcourse.ru/player/89cc32eeb182080b719abfc7f106aaaf/5b7008b4e8fab9852419a5c00e4aa618/media/720.m3u8?sid=sid&host=vh-04&cdn=1&cdn-second=0&integros-s3=1&akamai-defence=0&v=2:0:1:1 #EXT-X-STREAM-INF:BANDWIDTH=4096000,CODECS="mp4a.40.2, avc1.640028",RESOLUTION=1920x1080 https://vh-04.getcourse.ru/player/89cc32eeb182080b719abfc7f106aaaf/5b7008b4e8fab9852419a5c00e4aa618/media/1080.m3u8?sid=sid&host=vh-04&cdn=1&cdn-second=0&integros-s3=1&akamai-defence=0&v=2:0:1:1
Как можно увидеть этот файл содержит еще набор ссылок, и судя по их названию они обозначают разрешение видео, которое загружается.
Я решил посмотреть что из себя представляет файл 720.m3u8, для этого я его скачал, перейдя по соответствующей ссылке:
#EXTM3U #EXT-X-TARGETDURATION:11 #EXT-X-ALLOW-CACHE:YES #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:9.160000, https://getcourse-cdn-a1a5df3e.cdn.integros.com/ch/89cc32eeb182080b719abfc7f106aaaf/5b7008b4e8fab9852419a5c00e4aa618/720/0.ts?sid=sid&host=vh-04 #EXTINF:10.080000, https://getcourse-cdn-a1a5df3e.cdn.integros.com/ch/89cc32eeb182080b719abfc7f106aaaf/5b7008b4e8fab9852419a5c00e4aa618/720/1.ts?sid=sid&host=vh-04 #EXTINF:10.080000, https://getcourse-cdn-a1a5df3e.cdn.integros.com/ch/89cc32eeb182080b719abfc7f106aaaf/5b7008b4e8fab9852419a5c00e4aa618/720/2.ts?sid=sid&host=vh-04 #EXTINF:10.080000, . #EXTINF:8.800000, https://getcourse-cdn-a1a5df3e.cdn.integros.com/ch/89cc32eeb182080b719abfc7f106aaaf/5b7008b4e8fab9852419a5c00e4aa618/720/119.ts?sid=sid&host=vh-04 #EXT-X-ENDLIST
Если присмотреться внимательней то можно увидеть что все ссылки содержат *.ts, после того как я их скачал, оказалось что это как раз куски данного урока.
После небольшого поиска что-же такое m3u8 файл, я выяснил, что это формат для хранения плейлистов.
Теперь был вопрос как же его сохранить локально.
Сохранение видео из m3u8
Первое что я нашел в Интернете предлагало это сделать через VLC. Для этого нужно зайти в Файл -> Конвертировать/Передавать , после чего можно увидеть следующее окно:

В указывается исходный файл плейлиста, профиль сохранения и выходной файл. После чего нажимается кнопка Сохранить и процесс начинается (надо отметить, что процесс не быстрый).
Альтернативное сохранение
После того как таким способом я сохранил пару видео, я начал думать как оптимизировать процесс. Тут меня посетила мысль, что можно просто попробовать скачать все эти маленькие файлы и объединить их в один.
Для этого я написал небольшую утилитку на Go, для обработки файла *.m3u8 и объединения всех маленьких кусков из него в один файл.
Алгоритм работы ее достаточно прост: сначала я перехожу по заданной ссылке на m3u8, затем построчно обхожу его и если строка содержит URL кусочка, я скачиваю его и результат сразу пишу в выходной файл.
Код который это делает следующий:
// received file from server resp, err := http.Get(inputUrl) if err != nil < log.Fatal("Download error: ", err) >defer resp.Body.Close() // create output file f, err := os.Create(outputFile) if err != nil < log.Fatal("Download error: ", err) >defer f.Close() // read server response line by line scanner := bufio.NewScanner(resp.Body) i := 0 for scanner.Scan() < l := scanner.Text() // if line contains url address if strings.HasPrefix(l, "http") < // download file part part, err := downloadFilePart(l) if err != nil < log.Fatal("Download part error: ", err) >// write part to output file if _, err = f.Write(part); err != nil < log.Fatal("Write part to output file: ", err) >log.Printf("Download part %d\n", i) i++ > > if err := scanner.Err(); err != nil
Функция downloadFilePart отвечает именно за скачивание файла и вывод его в байтовый массив:
func downloadFilePart(url string) ([]byte, error) < result := make([]byte, 0) resp, err := http.Get(url) if err != nil < return result, err >if result, err = ioutil.ReadAll(resp.Body); err != nil < return result, err >return result, err >
Такой метод полностью себя оправдал и оказался самый быстрый.
Заключение
В конечном счете я не только скачал все нужные лекции, но еще и создал утилиту для скачки и сохранения *.m3u8 файлов.
Для пользователей Winodws готовую сборку можно взять тут.
Ссылки
Как достать m3u8 ссылку с любого сайта: пошаговая инструкция

В этой статье расскажем вам, как вручную находить m3u8 и m3u ссылки и как их копировать с любого сайта. Звучит запутанно, но уже через 5 минут вы сможете составлять свой IPTV плейлист!
Как найти M3U8 ссылки?
Нам понадобится браузер, поисковая система и подключение к интернету.
- Откройте Яндекс или Гугл и найдите онлайн-трансляцию нужного телеканала. Например, по запросу «Моя планета онлайн прямой эфир».
- Перейдите на любой сайт с корректно работающим плеером.
Видео, которое транслируется в плеере, и есть m3u / m3u8 / ts ссылка. Процесс поиска занял полминуты. Такое можно повторить с другими каналами.
Как достать M3U8 ссылку с сайта?
- Кликните правой кнопкой мыши по плееру (если нельзя, то просто на пустое место). Откройте раздел Исследовать элемент.
- В зависимости от браузера, справа или снизу откроется специальная страница «для разработчиков». Перейдите во вкладку Network и включите показ только XHR.
- Теперь найдите ссылку, которая заканчивается на .m3u8. Она должна быть одна, но может повторяться хоть сто раз.
После .m3u8 может стоять / или ? и десяток букв после них. Просто скопируйте ссылку и удалите все лишние символы.
Как достать m3u8 ссылку с любого сайта: пошаговая инструкция

В этой статье я покажу вам, как найти m3u8 и m3u ссылки вручную и как скопировать их с любого сайта.
Звучит запутанно, но уже через 5 минут вы сможете составить свой собственный список воспроизведения IPTV.
Как найти M3U8 ссылки?
Нам нужен браузер, поисковая система и подключение к Интернету. Я показываюсь на Яндексе и в одноименном браузере.
- Откройте Яндекс или Google и найдите в Интернете нужный вам телеканал. Например, выполните поиск «My Planet Online Live».

- Зайдите на любой сайт, где есть работающий плеер.

Видео, транслируемое в плеере, представляет собой ссылки m3u / m3u8 / ts. Процесс поиска занял полминуты. Это можно повторить и на других каналах.
Как достать M3U8 ссылку с сайта?
- Щелкните правой кнопкой мыши на проигрывателе (если не можете, щелкните на пустом месте). Откройте проект «Explore», как показано на скриншоте.

- В зависимости от вашего браузера справа или снизу откроется специальная страница «Для разработчиков». Перейдите на вкладку Сеть и включите отображение только XHR.

- Теперь найдите ссылку, заканчивающуюся на .m3u8. Это должна быть одна ссылка, но она может повторяться сто раз.
За ним может следовать / или ? , и дюжина или около того писем, которые следуют за ним. Просто скопируйте ссылку и удалите все лишние символы.

- Щелкните правой кнопкой мыши на нужном адресе → скопируйте адрес ссылки.

- Вставьте ссылку в m3u-файл и заставьте его правильно сформироваться. Как это сделать, я описываю в этой статье.

- Откройте только что созданный плейлист в вашем IPTV-плеере и наслаждайтесь просмотром!
Как вытащить видео с сайта?
У данного сайта на бэкграунде играет видео.
Как его вытащить и сохранить себе на компьютер?
- Вопрос задан более трёх лет назад
- 431699 просмотров
1 комментарий
Сложный 1 комментарий
Daria13131 @Daria13131
Добрый вечер! Раньше скачивала по вашему способу видео с Геткурс, сейчас снова пыталась, но никак не получается. Уже перепробовала миллион способов и все никак(
И код в видео немного другой стал, мб как то поменяли все и теперь данным способом нельзя так пользоваться? Кто сталкивался с таким, помогите пожалуйста, оч нужно скачать курсы, пока доступ к ним еще есть(
Решения вопроса 2

Travel Expert @TravelExpert
LifeHacker
Если видео с youtube — очень просто!
1.Если оно встроено в сайт — запускаем его, затем щелкаем на значок youtube и нас перебросит на youtube.
2.Затем переходим в адресную строку youtube.com/. и дописываем перед этим «ss», таким образом получиться адрес вида ssyoutube.com/. — вот туда и переходим и скачиваем.
Так же есть программы, которые скачивают, если указать им ссылку на видео на youtube или другом популярном сервисе. Например, Download Master(westbyte).
Если видео не с ютуба, то в большинстве случаев его тоже просто скачать.
Для этого в браузерах, например, таких как Firefox, Opera(старая) есть плагины обнаруживающие видео и качающие их.
В Chrome же, всё еще проще:
1.На странице видео нажмите правую клавишу в любом месте страницы и выберите в конце списка «Просмотреть код» или Ctrl+Shift+i. Видео не запускаем!
2. Переходим во вкладку Network, запускаем видео на странице и прописываем фильтр — обычно это mp4, flv, webm или же вместо фильтра тыкаем на Media. prntscr.com/cz9fba
3. В списке находим нужный файл, правой кнопкой мышки — Copy — Copy link.
4. Вставляем ссылку в любой менеджер закачки, тот же Download Master например.
Либо: открываем в браузере — откроется плеер, также правой кнопкой — Сохранить видео как.
Менеджер закачек предпочтительнее, т.к. позволяет качать в несколько потоков, поддерживает докачку, можно поставить на паузу и т.д.
Например, некоторые сайты, выдают ссылку на видео на определенный IP и на ограниченное время. Тогда, если вдруг сменится IP(интернет ребутнется) или если большой объем и не успеете скачать или еще что, то нужно будет так же получить новую ссылку и в свойствах закачки указать новую ссылку-источник.
Ответ написан более трёх лет назад
Нравится 7 5 комментариев
SixthHouseCult @SixthHouseCult
все эти советы бесполезны! в 99% случаев видео резаное потоковое, когда заходишь в network, media ничего не отображается в media, и m3u тоже нет там
timursarsembayev @timursarsembayev
SixthHouseCult, три года назад это работало, а сейчас видео в ВК потоковое. Тут принцип действия остается прежним, просто детали различаются.
Vitalii Bryl @shuffler_agr0s

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

Vitalii Bryl, Посмотрите тут
только расширение возьмите это. Другие которые я попробовал требовали оплаты либо не грузили сегментированное видео.
Отличный мануал. Спасибо, работает, если смекалку подключить. А то до этого не понимал, как работают сегменты, как их забирать и склеивать. На базе этого уже пишу себе скрипт на пайтоне. Там кто то ниже предлагал расширения для браузеров. Вы что, собираетесь руками каждый видосик выкачивать? Крэйзи )))
Nahlebnik1983 @Nahlebnik1983
вытащить из кода страницы.
https://youtu.be/3y6TkKaQXss
https://youtu.be/D7QmfCrtBmY
Ответ написан более трёх лет назад
Нравится 2 1 комментарий
nickname01 @nickname01 Автор вопроса
Эти слова стоит искать во всех случаях, когда нужно вытащить видео с сайта или такое сработает не всегда?
Ответы на вопрос 4
timursarsembayev @timursarsembayev
ОТВЕТ 2020 ГОДА
Решение для Linux (у меня Linux Mint):
1. Откройте страницу с видео роликом, видео не включайте
2. Открываете инспектор, вкладку Network
3. Включаете воспроизведение видео
4. В инспекторе в строке поиска вбиваете m3u8 и находите данный файл плейлиста (он обычно только один)
5. Скачиваете плейлист файл с расширением m3u8
6. Отдельно сохраните ссылку на m3u8, она будет примерно такой:
https://cs9-4v4.vkuservideo.net/video/hls/p2/3ebb0cd8afd8/index-f3-v1-a1.m3u8?extra=hkhc5u2Cz0VxVRI1gf8Zw_p-K1zG5eCCK_-AKvw8v0tBNO4CmLZSO8j5PKdHBSebK_Ph_sY7PqEDwFNzHJt-eXnOKPj1QRZD0ahfqy24z6ZIdGKqvRnHuE-PhoocuvBqMpKPAI46LFv4juflt6hO6mO4Elc
Отсюда нужно вычленить название самого файла и параметры после него, останется только это:
https://cs9-4v4.vkuservideo.net/video/hls/p2/3ebb0cd8afd8/
(у вас ссылка будет отличаться, это просто пример)
7. Откройте скачанный файл m3u8 в редакторе, например, Sublime Text
8. Откройте поиск по содержимому файла, включите режим регулярных выражений (regular expression), от строки поиска слева это кнопка .* или кликните по строке поиска и нажмите Alt+R
9. Введите в строку поиска #EXT.* и нажмите на кнопку Найти всё (Find All) и нажмите Backspace
10. Скопируйте полученный урл из 6 шага
11. Введите в строку поиска символ ^ (на англ.раскладке клавиатуры нажмите Shift+6) и нажмите Найти всё (Find All)
12. Вставьте скопированный урл (нажмите Ctrl+V) и сохраните изменения в файле
13. Откройте uGet (если не установлено, то установите его), перейдите в File -> Batch Downloads -> Text file import и выберите файл плейлиста m3u8, начнется скачивание отдельных файлов формата .ts в вашу домашнюю папку /home/username где username это имя вашей учетной записи
14. По окончании скачивания снова откройте файл плейлист в редакторе Sublime Text
15. В строку поиска вставьте скопированный урл из 6 шага и нажмите Найти всё (Find All), нажмите Backspace и сразу же напишите file ‘ ( слово file, пробел и одинарная кавычка ‘ )
16. В строку поиска введите ?extra.* ( если у вас включен режим регулярок, то введите \?extra.* ), нажмите клавишу Backspace, а затем клавишу ‘ (одинарная кавычка)
17. В итоге вы получите файл со списком что-то вроде этого:
file ‘seg-1-f3-v1-a1.ts’
file ‘seg-2-f3-v1-a1.ts’
file ‘seg-3-f3-v1-a1.ts’
и так далее.
18. Переименуйте файл плейлиста и измените его расширение, например так:
dwl_local.txt
19. Переместите файл dwl_local.txt в домашнюю папку /home/username куда были скачаны все файлы .ts
20. Откройте терминал в домашней папке и введите в нём следующее:
ffmpeg -f concat -i dwn_local.txt -c copy output.ts
или скопируйте эту строку и вставьте в терминал путем Shift+Ctrl+V
где dwn_local.txt это название файла со списком файлов
output.ts это название конечного файла
Если по каким-то причинам у вас не установлен ffmpeg, то установите его через терминал:
sudo apt install ffmpeg
Решение для Windows:
Всё то же самое, что и для Linux с 1 по 12 шаги
13. Нужен Download Master, также импортируйте файл плейлиста со ссылками, возможно нужно будет его переименовать сразу и поменять расширение, например, на dwn_local.txt
Дальше шаги с 14 по 18 повторите как в инструкции для Linux
19. Переместите файл dwn_local.txt в папку с загруженными файлами, возможно это папка Downloads (Загрузки)
20. Откройте командную строку Windows (найдите её в меню Start или Пуск) или нажмите клавиши Win+R и введите cmd, затем клавишу Enter
В командной строке введите следующее:
ffmpeg -f concat -i dwn_local.txt -c copy output.ts
где dwn_local.txt это список файлов
output.ts это конечный объединенный файл
Таким образом вы получаете объединенный файл .ts из нескольких фрагментов .ts
Сконвертировать в другие форматы можно при помощи VLC плеера или других программ
Файл .ts можно загружать себе на YouTube канал без конвертаций