Загрузите потоковое видео с большим количеством частей xhr, разделенных на аудио и видео

Загрузите потоковое видео с большим количеством частей xhr, разделенных на аудио и видео

Хочу скачать потоковое видео. Когда захожу в Chrome DevTools -> Network вместо ссылки на видео mp4 нахожу много ссылок типа ...hd4b.mp4/fragment-1-v1.m4sи других типа ...a1.m4sдля аудио. Также есть начальные ...hd4b.mp4/init-v1.mp4и ...init-a1.mp4. Слишком много фрагментов, чтобы копировать их вручную.

Поэтому мне нужно знать, как отфильтровать все ссылки на фрагменты .m4s для нужного мне файла .mp4. Существуетответь здесьэто дает мне все ссылки в Networks и после выполнения я могу вставить ссылки в файл, но он также получает ссылки, которые не являются частью .mp4, который я хочу. Это не имеет особого значения, но было бы неплохо получить только ссылки для ...hd4b.mp4.

Как мне получить ссылки на видео в одном файле, а на аудио — в другом?

Что делать со initссылками? Добавить их в список?

Теперь, как я думаю, способ получить ссылки будет таким: дойти до конца видео, получить последнюю цифру и сгенерировать ссылки, изменив цифру с единицы на последнюю. Как бы мне сгенерировать ссылки?Отвечать.

И потом, когда у меня будут ссылкивот путьчтобы скачать их, но как объединить части видео?

А когда у меня есть аудио и видео, как мне объединить их в финальный mp4?

решение1

youtube-dl

Попробуйте использовать последнюю версию для загрузки видео. Если вы не можете следовать инструкциям.

Сначала получите ссылки

В Chrome перейдите в DevTools -> Networks и найдите первую и последнюю ссылки фрагмента. Если ссылки последовательны, сгенерируйте ссылки типа:

seq -f "...hd4b.mp4/fragment-%g-v1.m4s" 10 > video-links.txt

Куда %gпойдет от 1 до 10. Если есть ссылка init, ее необходимо включить в начало файла video-links.txt.

Если ссылки не последовательны, скопируйте их следующим образом:

  1. Переключите devtools в отдельное окно (щелкните значок настроек devtools, щелкните значок отсоединения "dock side"). В следующий раз вы можете просто нажать Ctrl- Shift- D.
  2. Вызовите devtools-for-devtools, нажав Ctrl- Shift-i
  3. Запустите этот код, чтобы скопировать URL-адреса всех/отфильтрованных запросов в буфер обмена:copy(UI.panels.network._networkLogView._dataGrid._rootNode._flatNodes.map(n => n._request._url).join('\n'))

Вы можете сохранить код как фрагмент на панели «Источники» и запустить его, щелкнув правой кнопкой мыши или нажав Ctrl-Enter:

var URLs = UI.panels.network._networkLogView._dataGrid._rootNode._flatNodes.map(n => n._request._url);
copy(URLs.join('\n'));
URLs; // displays it in the console as an expandable array

После выполнения скрипта ссылки находятся в буфере обмена, поэтому вставьте их в файл.

Скачать видео и аудио

wget -i "video-links.txt" -O "video.mp4" -B "...hd4b.mp4/"

Используйте опцию -B с основой URL.

Загрузите аудио, выполнив те же действия, что и для видео.

Объединить видео и аудио

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

Связанный контент