飞鸟视频下载器模块和分层设计简述

视频下载器、下载器软件模块和分层设计

今年做了一个视频下载器,经过多版迭代,分层和模块划分越来越清晰。整理出经验,分享到这个伟大的平台。

做桌面应用好处是不怕变更传导出去,不合理就改,不怕别人找过来说“怎么结构变了,我也需要改”。

模块,分层设计草图

模块和分层详细说明

下载层

下载分批量下载和单视频下载,不同入口,不同操作,底层调用一样的模块。

m3u8 模块

m3u8文件解析为结构体,结构体序列化m3u8文件。

mpd 模块

mpd文件解析为结构体,结构体序列化mpd文件。

http range 模块

视频服务器端提供http 206服务
客户端实现切片下载,断点续传。

任务层

不论使用哪个模块下载, 都提交进度到任务层, 前端展示任务进度 和 终止任务。
收到终止任务指令,会contenx传导到下载模块 。 因此,在下载模块启动前先生成任务,获取contenx。

视频管理

播放、删除、重命名已下载视频。
下载完产的视频导出成mp4。

第一次用 webapp 实现桌面应用碰到的新情况

任务通知

在web应用中,一个路由会切入全新的页面, 不考虑上个页面做了什么。
在桌面应用中,上个页面提交任务,接下来不管切到哪个新页面, 任务完成后都要右上角提示 任务事件。

个人实现的软件

飞鸟视频下载器,目前m3u8视频完全支持, mpd视频部分支持。

中间版本曾经增加了IPTV检查和视频直播录制, 依赖项导致windows系统使用异常,从v3.x.x 版本移除这俩功能, 聚焦视频下载。

GitHub - youwen21/flybird-m3u8downloader: https://github.com/youwen21/flybird-downloader

最新版v3.3.2最windows平台做了大量优化, 建议windows用户下载最新版本。

3 个赞

要是可以一键下载小红书、抖音就太好啦!

抖音网页端用“猫抓” 发现mp4直接下载就十分方便。

感谢

感谢教程

:+1: :+1: :+1:可以用yt-dlp做解析

From 软件开发 to 开发调优