win11+kodcloud、h5ai+phpstudy+ipv6搭建私人云盘、私人影院
记录一下这几个月搭建的过程,以备未来需要时回看。
〇、
私人云盘、私人影院就是某某网盘的本地版,把本地的存储空间暴露给公网,使得任何能上网的设备都可以自由的获取该资源。然后再加一个前端管理界面,附带文件管理,视频切片播放,图片浏览,生成文件缩略图,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/bashBASEDIR="."function hlsfile(){file="$1"suffix="${file##*.}"filename="${file##*/}"curdir="${file%/*}"file_name_without_suffix="${filename%.*}"if [[ "${file##*.}" == "mp4" || "${file##*.}" == "mkv" ]]; thenm3u8dir="${curdir}/.contents/__${filename}__"if [[ ! -d "${m3u8dir}" && ! -f "${file}.aria2" ]]; thenmkdir -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>&1echo "${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_" ]]; thenffmpeg -ss 0:00 -i "${file}" -t 30 -c:v copy -c:a copy "${file30}" > /dev/null 2>&1touch -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"/*doif [[ -d "${dirfile}" && "${dirfile:0-5}" != "_h5ai" && "${dirfile:0-2}" != "__" ]]; thenscandir "${dirfile}"elsehlsfile "${dirfile}"fidone
}
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的设备访问这个域名,申请注册账号体验。
win11+kodcloud、h5ai+phpstudy+ipv6搭建私人云盘、私人影院相关推荐
- 搭建属于自己的私人云盘影音服务器(二)
立场申明:仅供学习交流,不提倡使用非官方正版. 什么是nas? Nas 是Network Area Storage 三个英文单词的缩写,以字义上来解释,叫做「网路储存空间」,它就是一个让大家可以透过网 ...
- 树莓派64位系统_树莓派4b+Ubuntu server+Nextcloud搭建私人云盘(1):准备系统
最近剁手买了一个4G版本的树莓派4b,并配了64g tf卡.我打算用它来搭建一个自己的私人服务器. 需求:树莓派4b+一部本地电脑+网线+路由器+一部有公网ip的云主机 首先,我们先到官方下载Ubun ...
- (Linux)私人云盘seafile搭建详解
前言 随着时代的发展,我们的生活正越来越贴近互联网.我们会把自己创造出的数据上传到网络上,也会将网络上我们感兴趣的数据下载到我们的存储设备上.新媒体的发展,更是使得每分钟都会有大量依托于网络的作品被创 ...
- 百度云网速慢?普通VIP也限速?用户激励措施太套路?Pandownload被举报?这些统统没关系,我们自己搭建一个私人云盘服务器
前言 前几天醒来后,照例耍手机看新闻.在疫情如此严重的档口,一则小小的新闻引起了我内心小小的波动:Pandownload作者被举报了....心里第一件事就是可惜了我盘上的那N多个T的小电影了,&quo ...
- 使用 Nextcloud 搭建私人云盘,并利用内网穿透实现公网远程访问
文章目录 一.前言 二.环境搭建 三.测试局域网访问 四.执行内网穿透 4.1 ubuntu 本地安装 cpolar 4.2 创建隧道 4.3 测试公网访问 五.配置固定 http 公网地址 5.1 ...
- 在VMware Workstation软件内,使用CentOS 7系统搭建私人云盘owncloud
在VMware Workstation软件内,使用CentOS 7系统搭建私人云盘owncloud 参考链接:私人云盘owncloud安装过程详解 1.关闭防火墙.SELINUX安全模式 system ...
- 搭建nextcloud私人云盘
搭建nextcloud私人云盘 1. Linux发行版本 本人的设备是OragePi4,安装的是基于debian的Armbian Buster Server,树莓派,云主机等可以安装对应的版本. 2. ...
- linux免费私人云盘软件,私人云盘搭建教程 如何自己搭建云盘
私人云盘搭建教程使用的是Linux的CentOS 6系统,首先登录ssh安装宝塔,根据购买的账号密码登录ssh. 然后安装宝塔面板,宝塔面板类似于虚拟主机,直接绑定域名上传就可以使用了.好处在于一个服 ...
- 闲置硬盘自制nas私有云_家里闲置硬盘怎么办?教你自己搭建一个私人云盘!
原标题:家里闲置硬盘怎么办?教你自己搭建一个私人云盘! 最近在家比较闲,把家里之前电脑硬盘升级到固态硬盘的那个500G的机械硬盘翻出来,看看如何利用起来,在家里放着也是浪费.因为有好多个人资源需要,但 ...
最新文章
- page event
- java 自定义异常 未回滚_抛出自定义异常,spring AOP事务不回滚的解决方案
- git切换到旧版本_github上怎么切换到某次提交?
- Altiris 7.1 安装
- 《能源专业的展望及其未来择业方向的分析》
- 罗马数字转整数Python解法
- 比较完整的URL验证
- php -- PDO异常处理
- mysql5.7.11升级_MySQL升级从5.6.18到5.7.11
- php文字游戏寻仙记,【寻仙记H5】Win服务端+小白架设教程+文字游戏+小仙亲测
- [hgo学习]-tutorial 03
- 预编译stdafx.h,无法找到文件问题,红色波浪线
- 计算机自动设置开机,怎么设置电脑自动开机
- Rplidar A2 屏蔽固定角度
- CAD插件的安装和自动加载dll、arx
- 计算机x线成像检查,计算机X线成像(X光机成像)简述
- Redis Operator学习笔记
- 中国各大银行卡号查询
- Linux的基础知识(2)-权限命令
- 教育类电影:《爆裂鼓手》
热门文章
- JAVA名片注册_JavaWeb练习-网上名片管理系统
- 网页安全证书错误但无法安装证书的解决办法
- 咸鱼前端—CSS字体外观
- 已解决org.springframework.beans.factory.UnsatisfiedDependencyException异常的正确解决方法,亲测有效!!!
- 【openpyxl】过滤和排序
- 多元函数带 Peano余项的Taylor公式的推广 (原创)
- python竖着展示诗_竖着写诗的格式
- jquery保留两位小数方法,字符串保留两位小数
- 如何在不同的窗口中打开多个Excel
- 学计算机应用专业去当兵有前途么,大学生以哪个专业入伍,发展潜力大?