爬虫下载视频

复制代码
# 下载工具
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();
        }
    }
}
相关推荐
C^h3 小时前
python函数学习
人工智能·python·机器学习
Fanta丶3 小时前
4.Python set()集合、dict(字典、映射)、 数据容器的通用功能
python
决战灬3 小时前
langgraph之interrupt(理论篇)
人工智能·python·agent
兜客互动4 小时前
2026年AI关键词拓展挖掘软件,高效助力内容创作精准获流
人工智能·python
weixin_538601974 小时前
智能体测开Day30pytest测试框架
python
MC皮蛋侠客4 小时前
uv 系列(七):CI/CD、Docker 与私有索引——生产级交付
python·ci/cd·docker·uv
邪神与厨二病4 小时前
牛客周赛 Round 153
python·算法
yaoxin5211234 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
groundhappy4 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
培之5 小时前
RTX 5090 安装 pytorch3d
人工智能·pytorch·python