B 站视频批量下载器
自学游戏建模期间的练手项目 · 2021 年
起因
学游戏建模那阵子,大量时间花在 B 站上看教程。但有些课程是系列视频,一个一个手动下载太慢了,而且在线看有时候卡顿。想着干脆写个批量下载器,把地址扔进去一次全拉下来。
设计思路
整体分三层:界面层用 PyQt5 做输入框 + 下载按钮 + 进度条的常规布局;工作层用 QThread 做后台下载,避免界面卡死;合并层用 ffmpeg 处理音视频合成。
核心流程是:爬虫用 requests 拿页面,BeautifulSoup 解析出视频的 dash 流信息——B站的视频和音频是分离的,需要分别下载无音轨视频流和音频流,然后调用 ffmpeg 命令行工具合并成完整视频。界面和工作层之间通过信号槽通信,下载进度通过 pyqtSignal 发射给界面更新进度条。
技术栈
| 模块 | 技术 |
|---|---|
| 界面 | PyQt5 |
| 爬虫解析 | requests + BeautifulSoup |
| 视频下载 | B站 dash 流解析 |
| 音视频合并 | ffmpeg |
| 开发语言 | Python |
收获
- 第一次完整地用 PyQt5 做了一个有实际用途的桌面工具
- 理解了信号槽机制在 UI 线程和后台线程之间的用法
- 爬虫解析的基本套路——从页面提取信息到构造下载请求
- 学会了用 subprocess 调用 ffmpeg 做音视频合并
← 返回个人经历
评论 (0)