Неожиданно столкнулся с необычной проблемой при сохранении потокового видео. Речь идёт о видеоролике Би-би-си, в котором рассказывается о БП Великобритании (Европы) 1950 г. Этот ролик отказывались качать любые программы и сайты. Погуглив проблему, я пришёл к выводу, что скачать подобное можно вручную. Я, к сожалению, не программист, поэтому разбирался только как инженер в этих веб-разработках. Однако видео извлечь получилось, хоть и долго, и неудобно. Итак, собственно, сам процесс на примере браузера "Мозилла" версии 76.0.1 (64-бит).
1) Заходим на сайт с видео (в нашем случае
BBC.com).
2) Нажимаем в верхнем правом углу браузера кнопку с тремя полосками ("Открыть меню") и выбираем "Веб-разработка > Сеть" или просто нажимаем вместе "Ctrl+Shift+E".
3) Внизу появится отладочная панель веб-разработчика, в которой надо выбрать "Медиа" (выделено красным на рис. ниже), чтобы отображались только медиа-ресурсы ролика:
4) Далее запускаем видеоролик и смотрим, какие появляются файлы на панели разработчика. Нас интересуют файлы с расширением m4s и dash. Дело в том, что потоковое видео разделено на множество сегментов видео и аудио. Они все с расширением m4s. Но есть и главные файлы, которые отвечают за правильную разметку каждой из дорожек. Обычно они формата mp4, но в нашем случае почему-то dash. Кроме того, существует файл расширения mpd, в котором содержится информация о разрешении видео, т.к. для разных устройств оно разное. Файл mpd выделен ниже. Чтобы его скачать, нажимаем ПКМ (правой кнопкой мыши) и в меню выбираем "Копировать > Копировать URL". Далее вставляем скопированный адрес либо в любую программу закачки, либо в пустую строку браузера и скачиваю файл. Я предпочитаю, например, Download Master.
5) Открываем скаченный файл в любом текстовом редакторе типа "Блокнот" и видим, что максимальное разрешение 1280х720 при 50 кадр/с, а идентификационный номер (id) такого потока "5070000", запомните это номер - он нам пригодится:
<Representation
id="video=5070000"
bandwidth="5070000"
width="1280"
height="720"
frameRate="50"
codecs="avc3.640020"
scanType="progressive">
6) Вернёмся на панель разработчика и увидим файлы m4s с длинным названием, которые различаются надписями "audio" и "video" в конце имени файла.
Это и есть сегменты видео и аудиодорожек. У каждого файла есть в конце номер сегмента. В данном случае он написан в самом конце имени файла после дефиса. Надо скачать все файлы m4s как звуковой дорожки, так и видеодорожки. Я не смог узнать, сколько всего сегментов, не посмотрев видео полностью. У последних файлов порядковый номер сегмента был 72, значит всего 72 сегмента. Перед дефисом присутствует идентификационный номер из 7 цифр. Помните номер из п.5? Сейчас мы его и используем. Копируем ссылку любого файла видеодорожки с окончанием, например, "video=2812000-1.m4s", меняем окончание ссылки на "video=5070000-1.m4s" и скачиваем первый сегмент видео. С остальными сегментами (осталось ещё 71 шт.) видео поступаем аналогично. Звуковые сегменты (с "audio=96000-1.m4s" по "audio=96000-72.m4s") закачиваем аналогично, просто менять ничего не надо, т.к. звуковая дорожка здесь только одна для всех разрешений видео.
7) Надо не забыть закачать файлы разметки. Эти файлы имеют почти ту же ссылку, что и любой сегмент определённый дорожки, только окончание другое. В нашем случае для видео надо вместо "video=5070000-30.m4s" скачать файл "video=5070000.dash", а для звуковой дорожки "audio=96000.dash", т.е. поменять окончание файла. Данные имена видны в скриншоте п. 6.
8 )Дальше мы будем работать с 72 файлами видео m4s, 72 файлами аудио m4s, разметочным файлом видео dash и разметочным файлом айдио dash. Т.е. всего для склеивания ролика нам нужно в нашем примере 146 файлов. Для удобства я разделил файлы видео и аудиодорожек в разные папки, а сегментам присвоил только номера, чтобы имя сегмента было типа "1.m4s", "2.m4s" и т. д., а имя разметки "1.dash" Далее вызываю командную строку в Windows (cmd.exe), перехожу в командной строке в папку с файлами звуковой дорожки. Склеиваю дорожку командой:
copy /b 1.dash + 1.m4s + 2.m4s + ... + 72.m4s audio.mp4
(вместо многоточия я перечислял все сегменты; возможно, можно упростить запись, но я не искал как).
Получаем целую аудиодорожку "audio.mp4". В командной строке переходим в папку с видеодорожкой и склеиваем аналогичной командой, но вместо"audio.mp4" пишем в команде "video.mp4" . Командную строку не закрываем, можно свернуть её.
9) Скачиваем программку ffmpeg на
официальном сайте. Последняя версия
здесь. Распаковываем архив с программой и копируем туда наши целые видео и звуковую дорожки в формате mp4. В командной строке переходим в папку с программой ffmpeg. Склеиваем видеоролик командой:
ffmpeg -i audio.mp4 -i video.mp4 -c copy movie.mp4
Готово! Файл movie.mp4 и есть нужное видео без потери качества. Вот
результат труда P.S.: осталось несколько неудобных моментов, на которые пока не нашёл ответа:1) Количество сегментов теоретически где-то должно быть, чтобы не ждать окончания видео.
2) Команда склеивания сегментов из п.8 должна быть короче (упрощена).
Надо попробовать вариант создания файла bat со следующим содержанием:
cd . >audio.m4s
FOR %%f IN (*.m4s) DO Type "%%f" >>audio.m4sА файл-dash приклеить потом.
3) Видеокодек H264x, которым сжало видео Би-би-си, поддерживают не все плееры. Например, Алексей Грушко жаловался на это. Впрочем, данный кодек можно скачать дополнительно для своего плеера или переконвертировать любым видеоконвертором самостоятельно.
4) В принципе есть программа
youtube-dl, которая делает всё в автоматическом режиме, но в случае с Би-би-си она бессильна.