JeffMony开源的VideoDownloader,Android平台视频下载SDK
JeffMony/VideoDownloader是一个Android平台的视频下载SDK,目前GitHub Star数为509。这一工具针对Android开发者的视频下载需求设计,提供完整的视频下载、管理、合并能力。
核心功能覆盖常见视频下载场景
VideoDownloader支持的视频类型包括mp4、mkv、mov、3gp等整视频格式,以及HLS M3U8格式视频。M3U8视频下载完成后,会生成本地的local.m3u8文件,用户可直接点击播放下载完成的视频文件。 工具内置数据库记录视频下载信息,支持视频下载队列,可同时处理多个下载任务。针对M3U8格式,提供合并为MP4的功能,用户可定制下载视频的标题和封面,还支持为视频下载任务设置group-name进行分组管理。
接入方式简单直接
开发者可通过Gradle引入这一SDK。首先在项目根目录的build.gradle中添加JitPack仓库地址,之后在模块的dependencies中引入对应版本的依赖即可。当前最新版本为5.8.0。 如果需要使用M3U8合并为MP4的功能,可额外引入对应的依赖包。官方提供两种合并库选择,用户可根据包体积需求选择完整FFmpeg库或裁剪后的轻量M3U8处理库。
使用流程清晰
SDK接入分为几个固定步骤。应用启动时,首先注册download config,设置缓存目录、超时时间、并发下载数、是否自动合并M3U8等参数。之后注册全局download listener,监听下载任务的各个状态回调,包括准备、开始、进度更新、暂停、错误、成功等状态。 开发者可通过接口获取当前所有下载任务,调用对应的方法执行启动下载、暂停下载、恢复下载、删除下载任务、批量暂停等操作。M3U8合并功能也提供独立接口,用户传入输入文件路径和输出路径即可触发合并,合并结果通过回调返回。 SDK的VideoTaskItem类封装了下载任务的所有信息,包括下载地址、创建时间、任务状态、下载进度、下载速度、文件大小、保存路径等。VideoTaskState类定义了所有可能的任务状态,开发者可直接使用这些常量判断任务当前状态。
版本迭代稳定
目前SDK已经迭代到5.8.0版本,近期更新内容包括修复下载成功回调多次的问题,解决FFmpeg合并时出现的pts异常问题。之前的版本迭代中,还完成了FFmpeg库裁剪,将体积从10M降至1M,优化了TS合并逻辑,提供四种架构的so库支持,满足不同设备的适配需求。 这一SDK适合需要在Android应用中集成视频下载功能的开发者使用,代码开源在GitHub,开发者可根据需求自行修改扩展。