爬虫下载视频

复制代码
# 下载工具
pip install yt-dlp
pip install browser-cookie3 pycryptodomex

# 检查安装
yt-dlp --version
javascript 复制代码
打开  https://www.gyan.dev/ffmpeg/builds/
下载 ffmpeg-release-essentials.zip
解压,把里面的 bin\ffmpeg.exe 所在目录(如 C:\ffmpeg\bin)加入系统 PATH
重启 CMD / IDE
验证:ffmpeg -version

配置环境变量

检擦安装

建议优化改成批量下载,使用线程程

java 复制代码
package com.ldj.springboot.importbean.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;

/**
 * User: ldj
 * Date: 2026/1/24
 * Time: 11:32
 * Description: No Description
 */
public class BilibiliDownloader {

    public static void main(String[] args) {
        // 视频链接
        String videoUrl = "https://www.bilibili.com/video/BV1SS421K7yX?spm_id_from=333.788.recommend_more_video.0&trackid=web_related_0.router-related-2206146-rj2c7.1769236186300.334&vd_source=fe0294a30f1e450793d2ae5e66c7975b";
        // cookie文件
        String cookiesPath = "src/main/resources/cookie/cookies.txt";
        // 下载目录
        String outputDir = "src/main/resources/video";
        // 文件名格式
        String outputFileName = "%(title)s.%(ext)s";

        /**
         * 先安装 pip install yt-dlp
         * 使用yt-dlp 工具下载
         * -o: 输出路径
         * -f 选择分辨率(会自动合并音视频)
         * --merge-output-format mp4: 合并后的格式
         * --no-overwrites: 不覆盖已有文件
         * 分片失败无限重试
         * 同时下载 8 个分片(默认是 1)
         */
        ProcessBuilder pb = new ProcessBuilder(
                "yt-dlp",
                "--cookies", cookiesPath,
                "-o", outputDir + File.separator + outputFileName,
                "-f", "30080+30280/30064+30280/b",
                "--merge-output-format", "mp4",
                "--no-overwrites",
                "--fragment-retries", "infinite",
                "--concurrent-fragments", "8",
                videoUrl
        );

        // 设置工作目录
        pb.directory(new File("."));

        try {
            System.out.println("开始下载任务...");
            System.out.println("执行命令: " + String.join(" ", pb.command()));
            // 启动进程
            Process process = pb.start();
            // 读取命令行输出(用于实时显示下载进度)
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            // 等待进程结束并获取结果
            int exitCode = process.waitFor();
            System.out.println("\n任务结束!状态码: " + outputDir);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
相关推荐
iReachers2 分钟前
Termux:把安卓手机变成随身的命令行工具箱
python·安卓·termux·命令行·实用工具
xy_zoe5 分钟前
揭秘市面上那些热门的SEO优化服务机构!
python·facebook
Python图像识别8 分钟前
43-【2027毕设】YOLO11暴力检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
卷无止境12 分钟前
如何让AI Agent老老实实遵守公司代码规范——以Pi Agent为例
后端·python
计算机编程指导师14 分钟前
计算机毕设怎么做?基于Hadoop+Spark的商场商铺数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·商场商铺
李福春16 分钟前
斗破Google ADK Java苍穹-第7境斗皇-御天地-Harness治理
java·人工智能·python·深圳同盟·腾讯云架构师技术同盟·adk java·harness 治理
quantdash_cc21 分钟前
实时行情出现短暂异常时应该怎么处理?从数据校验到故障定位
开发语言·python·数据分析·量化交易·股票数据·quantdash
丨白色风车丨41 分钟前
Python中JSON与字典/列表的相互转换详解
windows·python·json
梦想不只是梦与想42 分钟前
SQLAlchemy:查询与操作 (三)
数据库·python·sqlalchemy
计算机编程指导师1 小时前
【大数据毕设】基于Hadoop+Django乳腺癌数据分析与可视化系统选题推荐 源码 毕业设计 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·毕业设计·课程设计·乳腺癌