可否增加批量下载功能
可否增加批量下载番剧功能
这里有一个视频切片合成的问题,播放的视频流本质是分散的ts切片,我们需要将其合成为单个视频文件。
这个过程需要 ffmpeg 的介入,并且涉及原生互操作,需要为目前支持的五个平台单独编写代码,有许多复杂的细节需要处理,这个功能在计划中,但应该不会很快到来。
感谢你找来了那么多的参考。
不过问题是这样的,使用现成的插件来实现切片下载与合并并不困难,但是会打包和视频播放器重复的ffmpeg二进制文件。
我们希望自己实现这一插件,调用已经存在的来自视频播放器的ffmpeg库。这样比较优雅。
这相对来说困难一些。
如果直接借助 Dio 下载会是一个好的方案么?这样子就只是请求视频源了,应该不会把 ffmpeg 给打包了
要处理 m3u8 视频分片下载和合并的问题
当然不希望打包 ffmpeg ,这样的话需要手动处理片段合并,有许多边缘情况要测试和考虑,很多视频片段不怎么标准
此外这些工作需要等待另一项重构的完成
也就是将当前的视频获取方式,重构为一个和 UI 无关的 videoProvider ,这里主要的阻碍是 HarmonyOS 无法在UI中没有 webview 组件的情况下执行脚本注入,我在考虑为 kazumiDialog 实现一个 overlay 功能来解决,我不知道 @ErBWs 怎么看待这一方案
@aliferne
如果你对这个问题感兴趣的话,可以尝试实现一个纯dart,不依赖ffmpeg的 mp4/m3u8 网络视频保存为单一视频文件的库,还可以尝试到发布到 pub.dev
我有点没看懂什么是 为 kazumiDialog 实现一个 overlay 功能
应该不会把 ffmpeg 给打包了
在现在使用 media-kit 的情况下可以直接使用 mpv 工具将片段合并为一个完整的视频,不过据测试,性能不会很好,但是我觉得这可能是最简单的方案
@ErBWs
让一个 widget 始终悬浮在应用其他组件和页面的上方,悬浮一个 1x1 大小的 webview ,虽然感觉很脏,但是好像没有其他太好的办法。
看上去应该是可行的
在现在使用 media-kit 的情况下可以直接使用 mpv 工具将片段合并为一个完整的视频,不过据测试,性能不会很好,但是我觉得这可能是最简单的方案
值得一试吧,此外就是这个项目有哪里用到过 Dio 吗,如果有的话也许集成起来会相对简单些, 我可以尝试写一个基于 Dio 的下载方案,直接请求 bangumi 的视频源进行打包下载。
media-kit 方案要转码,在移动设备上实在是太慢了
基于 dio 的方案应该是创建一个独立的使用 dio 的视频下载库,并且实现基于 dart 的文件合并,只处理文件头并进行拼接,这很快,但是要处理一些边缘情况,我们应该只向这个库传入视频直链,库下载到指定位置
我大概理解了,我有时间的话尝试一下
貌似较难做到批量下载,目前的架构不太支持这一点, 要想下载就必须获取网页,而获取网页就意味着需要点到对应某一集去, 可以先做一个单集下载吗
此外我的想法是在这个窗口开一个下载的 TabBar 作为扩展,
我可能需要点时间研究一下 webkit 是怎么拿到视频 URI 的
就像我前面说的,如果可能的话,你只需要实现一个传入视频直链,可以进行下载和拼接的库就可以了
架构问题我会后来解决来合入这个库
@Predidit m3u8 格式处理起来相对麻烦一些,如果可以的话我想先只提交 mp4 的 PR(作为 draft) 你可以测试一下效果如何 目前应该是基本支持 7sefun 源的视频下载了
效果相当不错,但是太简单了,我们至少要完成m3u8相关功能才能将其标记为可供审核
那可能需要等一阵子,实现解析并拼接 ts 文件似乎需要的时间会比较长
我在 pub.dev 中看到了相关的 m3u8 解析库,但使用人数都比较少,不太确定可靠性如何
现在这个用的 file_picker 还是我对比了几个方案才搞定的,Flutter 似乎没有多少库能做到全平台支持
我已经作为 draft 提交了,其他贡献者有时间的话也可以参与到贡献中