Хочу скачать потоковое видео. Когда захожу в 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
.
Если ссылки не последовательны, скопируйте их следующим образом:
- Переключите devtools в отдельное окно (щелкните значок настроек devtools, щелкните значок отсоединения "dock side"). В следующий раз вы можете просто нажать Ctrl- Shift- D.
- Вызовите devtools-for-devtools, нажав Ctrl- Shift-i
- Запустите этот код, чтобы скопировать 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