Загрузка видео с веб-страницы (синтез загрузки потока TS)
Загрузка видео с веб-страницы (синтез загрузки потока TS)

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

Предисловие

«Блуждающая Земля» в последнее время стала довольно популярной. Я хотел найти ресурсы для скачивания, но смог найти только веб-сайт. http://m.tlyy.tv/ ,но мойchromeПлагин также не может отслеживать содержимое веб-страницы.видео。。С тех пор,Щелкните правой кнопкой мыши на странице,inspect Начни ходить...

шаг

Первым, кто обнаружил

Появляется файл m3u8 /Snickering, что это за файл m3u8? Скопируйте адрес и wget и посмотрите: Содержимое файла playlist.m3u8 выглядит следующим образом. Видно, что видео на веб-странице воспроизводится на основе потока ts, организованного этим списком воспроизведения.

Язык кода:javascript
копировать
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:14
#EXTINF:5.966667,
out000.ts
#EXTINF:4.300000,
out001.ts
#EXTINF:5.166667,
out002.ts
#EXTINF:5.700000,
out003.ts
#EXTINF:4.433333,
out004.ts
#EXTINF:5.166667,
out005.ts
#EXTINF:4.833333,
out006.ts
#EXTINF:5.500000,
out007.ts
#EXTINF:4.900000,
out008.ts
.......
#EXTINF:5.733333,
out1444.ts
#EXTINF:0.266667,
out1445.ts
#EXT-X-ENDLIST

Более того, соглашение об именах потоков ts является стандартным и его легко загрузить. Сначала я планировал создать сценарий оболочки и использовать wget для его решения.

Язык кода:javascript
копировать
#!/bin/bash
str="out"

for i in `seq 0 1000`
do
    a=$((1000+$i))
    str1=$str${a:1:3}\.ts # генерировать string "out000.ts"~"out999.ts"
    echo $str1
    wget https\:\/\/doubanzyv4\.tyswmp\.com\:888\/2019\/02\/07\/06SfTJsUSa6nKqG9\/$str1 -P ./ts_list/
done

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

Язык кода:javascript
копировать
#!/bin/bash
str="out"

for i in `seq 0 999`
do
    a=$((1000+$i))
    str1=$str${a:1:3}\.ts # генерировать string "out000.ts"~"out999.ts"
    echo $str1
	google-chrome https\:\/\/doubanzyv4\.tyswmp\.com\:888\/2019\/02\/07\/hLShLmXEtVqiYix9\/$str1
    sleep 1s	# Задержка 1 с, в зависимости от скорости сети
done

После загрузки всех файлов потока ts запустите синтез и используйте инструмент-убийцу: ffmpeg. Используйте разделитель concat mpeg, чтобы сначала создать текстовый файл filelist.txt в каталоге файлов ts, который представляет собой последовательный список файлов потока ts:

файл «out000.ts» файл «out001.ts» файл «out002.ts» … файл «out1349.ts» Разумеется, этого нужно добиться с помощью программы (С):

Язык кода:javascript
копировать
#include <stdio.h>

int main(void)
{ 
   
    FILE *fp = NULL;
    fp = fopen("./ts_list/filelist.txt", "w+");

    for (int i = 0; i < 1350; i++)
    { 
   
        fprintf(fp, "file \'out");
        fprintf(fp, "%03d", i);
        fputs(".ts\'\n", fp);
    }

    fclose(fp);
}

Затем откройте терминал в каталоге файлов и используйте ffmpeg для синтеза:

Язык кода:javascript
копировать
ffmpeg -f concat -i filelist.txt -c copy output.mkv

Всё будет хорошо примерно через минуту(Если что-то пойдет не так, попробуйте другие форматы вывода: flv, mp4, wmv, avi.),В каталоге есть файл output.mkv, наслаждайтесь!

Вложение: практические команды ffmpeg.

Язык кода:javascript
копировать
ffmpeg -i input.mp4 output.mp3 # Извлечь аудио из видео
ffmpeg -i input.mp4 -ss 00:01:20 -c copy -t 10 output.mp4 #Перехватить видеовыход 10-секундных часов, начиная с 00:01:20
ffmpeg -i input.mp4 -c:v copy -an input-no-audio.mp4 #Удалить звук в видео
ffmpeg -i input-no-audio.mp4 -i input.mp3 -c copy output.mp4 #объединение звука видео

Ссылки

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/161212.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода