爬虫下载视频

复制代码
# 下载工具
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();
        }
    }
}
相关推荐
ZC跨境爬虫12 分钟前
批量爬取小说章节并优化排版(附完整可运行脚本)
前端·爬虫·python·自动化
ths51214 分钟前
Python 正则表达式实战指南:从入门到精通(12 个高频案例)(三)
python·正则表达式
ZC跨境爬虫14 分钟前
海南大学交友平台登录页开发实战day4(解决python传输并读取登录信息的问题)
开发语言·前端·python·flask·html
Wyawsl16 分钟前
Python操作MySQL数据库
数据库·python·mysql
SuperEugene23 分钟前
Python 异步 async/await:为什么 AI 框架大量使用?| 基础篇
开发语言·人工智能·python
SMF191929 分钟前
【uv】Python包管理器uv安装和应用
开发语言·python·uv
gergul29 分钟前
在llama-cpp-python中使用自己编译的llama.cpp,解决pip install llama-cpp-python报错
python·llama·llama.cpp·llamacpppython
深蓝轨迹30 分钟前
#Python零基础机器学习入门教程
人工智能·python·机器学习
蓝色的杯子32 分钟前
Python面试30分钟突击掌握-LeetCode1-Array
开发语言·python·面试
怪祝浙33 分钟前
超简洁YOLO8n快速上手人员检测
python