Загрузка видео с веб-страницы (синтез загрузки потока 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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose