win11+kodcloud、h5ai+phpstudy+ipv6搭建私人云盘、私人影院

您所在的位置:网站首页 私人云盘哪个比较好用啊苹果 win11+kodcloud、h5ai+phpstudy+ipv6搭建私人云盘、私人影院

win11+kodcloud、h5ai+phpstudy+ipv6搭建私人云盘、私人影院

2024-07-13 21:01| 来源: 网络整理| 查看: 265

记录一下这几个月搭建的过程,以备未来需要时回看。

〇、

私人云盘、私人影院就是某某网盘的本地版,把本地的存储空间暴露给公网,使得任何能上网的设备都可以自由的获取该资源。然后再加一个前端管理界面,附带文件管理,视频切片播放,图片浏览,生成文件缩略图,pdf查看,word、ppt、excel在线编辑等功能。不仅包含目前市面网盘的一切功能,甚至还有超出他们的功能。

目前私有云盘的应用大多开源,如nextcloud,seafile等。国内国外有数十款相关的应用,如kodcloud等。其主要收入来源于企业的私有定制,对于个人开发者当然是尽可能的免费。私人云盘的应用本质上就是提供一个文件管理前端,后端的文件传输主要依靠各大web服务器如nginx,apache等。因此,本地私有网盘既不提供存储,也不提供带宽,性能自然比不上主流的网络云盘。当然,主流的网络云盘如百度云,阿里云,google drive,onedrive等,即提供存储,又提供带宽,自然质量、费用更高。

一、搭建过程

由于一般的nas性能不如win系统,wls又占用内存、cpu,自然想到用win端直接部署服务器。

现在有很多服务器环境管理软件,如宝塔面板,xx面板,可以直接接管服务器的运维管理。win端也有很多管理软件,比较好用的是phpstudy,中文名小皮面板小皮面板(phpstudy) - 让天下没有难配的服务器环境!

 

 安装常用的后端软件,如mysql,nginx,php,redis,apache即可。

然后就是部署私有云盘,这里选择了kodcloud和h5ai,可道云是国内一家做的非常不错的私有云盘,功能非常多,支持很多文件的在线预览(甚至包含工程建模软件)。h5ai是一个多媒体播放器,主要用来预览图片和视频。h5ai有一个国人的修改版,可以支持hls切片播放+dplayer,直接秒杀xx云盘的在线播放功能,拖到哪都是秒播,不管你是4k还是8k的视频,只要把它切片成10s以内的几百kb片段,就算是2G网络也能看4k。。。甚至可以1s一个切片,只要不嫌文件数量多。

1. kodcloud部署

参考教程,可道云团队 - Powered by kodbox

(官方demo可道云-kodbox - Powered by kodbox)

下载服务端文件,并下载windows端客户端软件

​​​​​​下载 - 可道云-私有云存储&协同办公平台_企业网盘_企业云盘_网盘_云盘

解压到某目录,设置小皮面板路径

打开localhost:port,port就是设置的端口号。

然后进行相关设置。

上传下载优化

可道云KODExplorer-OpenAPI及开发文档_企业网盘_企业云盘_私有云_云盘_网盘

kodbox 可道云上传大文件(超过4G的)_可道云上传大文件失败_zhangbest5的博客-CSDN博客

封面生成 高级教程

 其他相关功能安装相应插件。

最终效果

2. h5ai服务器部署

h5ai服务器是一个多媒体服务器,可以播放本地的图片、视频。光有这些功能实在是太简陋了,而且h5原生的video标签性能极其拉胯。好几年前有一个国人对h5ai进行了修改,添加了dplayer插件和hls流媒体功能,播放视频的性能大大提升。(dplayer也是一个国人开发的非常厉害的播放器插件)

H5AI 部署、配置与美化 - Cyrus's Blog

路径设置:

public/js/scripts.js 文件定制

该文件是h5ai的后端代码打包编译生成的,国人的h5ai改编版本就是给h5ai添加了hls插件,然后修改了该文件的部分逻辑。如果要定制相关的播放逻辑,则需要修改以下部分。(在文件中搜索关键词filename即可定位这段代码)

return new Promise(function(t) { var fileurl = e.absHref; console.log(fileurl); var filepath = fileurl.slice(0,fileurl.lastIndexOf('/')); var filename = fileurl.slice(fileurl.lastIndexOf('/')+1); var filenotype = fileurl.slice(fileurl.lastIndexOf('/')+1,fileurl.lastIndexOf('.')); var m3u8 = filepath+"/.contents"+'/__'+filename+'__/video.m3u8'; var sub = filepath+'/'+filenotype+'.vtt'; function loadXMLDoc() { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { loadPlayer(m3u8); console.log('m3u8 yes'); } else if (xmlhttp.status == 404) { console.log('m3u8 no'); loadPlayer(fileurl); } else { console.log('other'); } } } xmlhttp.open("GET", m3u8, true); xmlhttp.send(); }

这段代码的功能就是,对于某目录下的filename文件,当他是mp4文件或者mkv文件时,点击播放的时候,首先播放./.contents/__filename__/video.m3u8视频文件,这是一种流媒体格式,播放的是视频文件的某段切片。如果该路径不存在,那就播放原视频。

如果要修改这段逻辑,那就修改上面这段代码即可。

给视频文件切片的sh程序:(windows端安装git后使用命令sh xx.sh可以运行shell文件)

#!/bin/bash BASEDIR="." function hlsfile(){ file="$1" suffix="${file##*.}" filename="${file##*/}" curdir="${file%/*}" file_name_without_suffix="${filename%.*}" if [[ "${file##*.}" == "mp4" || "${file##*.}" == "mkv" ]]; then m3u8dir="${curdir}/.contents/__${filename}__" if [[ ! -d "${m3u8dir}" && ! -f "${file}.aria2" ]]; then mkdir -p "${m3u8dir}" ffmpeg -i "${file}" -c copy -bsf:v h264_mp4toannexb -hls_time 6 -hls_list_size 0 -hls_segment_filename "${m3u8dir}/%04d.ts" "${m3u8dir}/video.m3u8" > /dev/null 2>&1 echo "${file}" # echo "${suffix}" # echo "${filename}" # echo "${curdir}" # echo "${file_name_without_suffix}" # echo " " # echo 'Rikka' > "${file}" # 截取原视频开头最长30s,并保留原视频的修改日期 file30="${curdir}/_30s_${file_name_without_suffix}.${suffix}" file30temp="${curdir}/temp/_30s_${file_name_without_suffix}.${suffix}" if [[ ! -e "$file30" && "${filename:0:5}" != "_30s_" ]]; then ffmpeg -ss 0:00 -i "${file}" -t 30 -c:v copy -c:a copy "${file30}" > /dev/null 2>&1 touch -amcr "${file}" "${file30}" mv -f "${file30}" "${file}" # touch -amcr "${file30temp}" "${file}" # rm -rf "${curdir}/temp" fi # 截取30s功能结束 fi fi } function scandir(){ for dirfile in "$1"/* do if [[ -d "${dirfile}" && "${dirfile:0-5}" != "_h5ai" && "${dirfile:0-2}" != "__" ]]; then scandir "${dirfile}" else hlsfile "${dirfile}" fi done } scandir "${BASEDIR}" echo "hls finish"

文件介绍

需要提前安装ffmpeg软件,并设置环境变量。

在某一路径下新建hls.sh文件,粘贴上述内容,然后powershell执行sh hls.sh后,执行视频切片功能。从当前目录开始,递归扫描所有的子目录,把所有存在的mp4文件和mkv文件切片,切片文件在当前目录的.contents文件夹里的同名文件夹下。

原文件会截取开头最长30s的部分,用于生成缩略图。截取功能是我自己添加的,原服务器附带的shell文件是没有这个功能的。这样会导致所有的视频都占用两份空间。当然,如果不需要这个功能,就把shell文件中的截取30s部分注释掉,然后在相应的目录执行shell文件即可。

执行效果:

 

 

 

 切片文件是切成了12s一个片段,如果想要修改切片的参数,只需修改hls.sh中的代码

ffmpeg -i "${file}" -c copy -bsf:v h264_mp4toannexb -hls_time 6 -hls_list_size 0 -hls_segment_filename "${m3u8dir}/%04d.ts" "${m3u8dir}/video.m3u8" > /dev/null 2>&1

相关参数自行百度

3. win服务端设备获取公网ip并设置ddns

这个可以参考之前我写的博客,威海校区内的校园网,windows设备均可以获取ipv6的公网IP,linux端无法获取,需要安装某些软件。安卓端流量可以获取ipv6地址,root以后安装某些软件可以从校园网获取ipv6地址。苹果端手机使用流量无法获取ipv6地址,校园网也不行。mac使用校园网可以获取ipv6地址。

然后在win端本地写一个ddns脚本,设置定期运行,在阿里云几块钱买一个域名解析到本地即可。实现暴露到公网。

最终就可以通过域名访问本地的私有云盘了。

 

我的私有云盘域名是v6.zsq1.xyz:8080,有兴趣的可以使用能获取ipv6的设备访问这个域名,申请注册账号体验。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3