内置的video组件,支持m3u8
我说的是下载m3u8 如:下载m3u8存储为mp4文件
回复 1***@qq.com: m3u8,是一个文本,多了解下m3u8吧
回复 DCloud_heavensoft: 唉尴尬,烦请您先了解下m3u8以及ffmpeg
回复 1***@qq.com: m3u8,是一个文本文件,里面是播放列表。uni-app的video组件内置了ffmpeg,可以播放m3u8
回复 DCloud_heavensoft: 嗯嗯是的,我知道可以播放m3u8,但我的需求是将m3u8资源缓存下载下来,具体是:视频播放类app需要缓存功能,而我的资源是m3u8的,所以需要将其资源下载合并转换为mp4等格式的文件。原生开发可结合ffmpeg完成,我现在需求是这样的一个插件。感谢关注
592944557 来吧,我可以做
可以做,Q~ 1196097915
兄弟 实现了吗
实现了,但有点麻烦,实例:http://eyunzhu.com/tools/pahei/app.html
回复 1***@qq.com: 有思路,和方法么
兄弟给个简单的demo吧,,,感谢!
在uni-app中实现m3u8视频文件的下载,通常需要借助第三方插件或者原生代码进行扩展。由于uni-app本身不直接支持m3u8文件的下载,我们可以考虑使用H5+ API或者通过原生模块来实现这一功能。下面提供一个基于H5+ API的示例代码,以及如何通过uni-app插件市场找到相关插件的指引。
使用H5+ API实现m3u8下载
首先,确保你的项目已经开启了H5+扩展API的权限。然后,你可以使用以下代码来下载m3u8文件:
// 引入必要的模块
const fs = plus.io.FileSystemManager;
const downloadTask = plus.downloader.createDownloadTask({
url: 'https://example.com/path/to/your/video.m3u8', // m3u8文件的URL
filename: '_downloads/video.m3u8' // 下载后保存的文件路径
});
downloadTask.onStart(function (res) {
console.log('下载开始');
});
downloadTask.onProgress(function (res) {
console.log('下载进度', res.progress);
console.log('已下载字节数', res.totalBytesWritten);
console.log('预期下载总字节数', res.totalBytesExpectedToWrite);
});
downloadTask.onSuccess(function (res) {
console.log('下载成功', res.tempFilePath); // 注意:这里返回的是临时文件路径
// 如果需要移动到永久存储目录,可以使用fs.moveFile
fs.moveFile({
srcPath: res.tempFilePath,
destPath: '_www/downloads/video.m3u8', // 永久存储目录路径
success: function () {
console.log('文件移动成功');
},
fail: function (err) {
console.error('文件移动失败', err);
}
});
});
downloadTask.onError(function (err) {
console.error('下载失败', err);
});
// 开始下载
downloadTask.start();
使用uni-app插件市场插件
如果上述方法不符合你的需求,你可以访问uni-app插件市场,搜索“m3u8 下载”等关键词,找到合适的插件。通常,这些插件会提供更封装好的接口,使得集成更加简单。
例如,你可能会找到一个名为uni-m3u8-downloader
的插件(注意:此插件名为示例,实际使用时请查找可用的插件)。使用插件时,只需按照插件文档进行安装和配置,然后调用插件提供的API即可完成m3u8文件的下载。
// 假设插件提供了一个名为downloadM3U8的方法
const downloader = require('uni-m3u8-downloader');
downloader.downloadM3U8({
url: 'https://example.com/path/to/your/video.m3u8',
success: function (filePath) {
console.log('下载成功,文件路径:', filePath);
},
fail: function (err) {
console.error('下载失败', err);
}
});
请根据实际情况选择合适的实现方式。