java web 自己开发NAS个人网盘、视频网站视频播放服务端大视频文件处理逻辑解决方案和思路
说一下我的需求,我个人的需求是这样的,我自己想搞一个个人网盘来保存我的各种资料和视频,但是又要方便直接在硬盘操作,就是轻量级实现,一个简单的NGINX是不符合我的需求的,功能太过简单了,而市面上的开源的很多都太过重量级实现。
所以我实现的主要需求是个人NAS系统视频播放
这里提一下,我是H5网页播放。前端我就不说了,H5的播放器,解决方案太多了,不值得去写,主要是服务端的视频处理方案。
我最开始通过response的流的方式下载实现预览视频文件,本地还好,2.3G的视频文件可以秒级打开,但是即使是内网环境加上网络传输环节了,二十分钟都不一定下载的了,我在内网中电脑打开,用手机打开,30分钟一个2.5G的视频根本就没有打开,而且还有内存问题,经常异常,根本不行。
我在网上查找的解决方案很少,我从很少的资料中总结就两点:
1、通过ffmpeg(没有找到其他合适的视频处理框架)切片、转TS视频片段或者MP4片段
参考:Java通过cmd调用FFmpeg实现大视频文件的分段切割
但是我存在本地硬盘的视频不可能实现把视频文件通过5s切割一下,切的零零散散的,这太不优雅了。
这里提一下,这个结局方案适合做视频网站的,将视频切割成ts格式文件,然后通过HTTP请求,常规的下载文件流的方式响应即可,就像如下这样(代码实现),这些一小片一小片的就很好处理,无论是缓存还是什么的还有节省服务器宽带资源,包括通过ffmpge生存列表都有成熟的解决方案,网上查的到,我就不说了。
但是对于个人NAS视频播放处理进行文件分割肯定不现实,群晖这些是不是这个方案我不是很清楚,恰巧又通过ffmpge实现推流这些视频流服务器实现,就往视频流服务器上面去查资料,花了两天,查了很多JAVA实现根本没有,都是C/C++实现的,我这个人又不喜欢折腾,网上恰恰很多ffmpge+nginx视频点播、直播的配置,然后就想NGINX MP4的实现思路。
但是在WINDOWS 环境中,又遇到一个问题,NGINX WINDOWS中URL包含中文会出现404乱码问题,我试了很多方案和查看日志,都不得行,我本地文件夹和文件名又不可能全部搞成英文,如果写JAVA代码中转一遍,又太过笨重,我这个问题卡了两周,都在考虑NGINX+LUA脚本扩展之类的,网上能够查到的资料我都查了,看NGINX对我来说不太现实,那么庞大的代码量,就为了这么一个小的功能点,而我对C++又不是很熟悉,而NGINX这种知名开源项目基本上都是代码量很大的,所以解决这个问题又遥遥无期了。
而nginx window 中文404我解决了,查看我另外一篇博客:java web 自己开发NAS个人网盘、视频网站视频播放服务端大视频文件处理逻辑解决方案和思路
我在想NGINX有没有视频流的解决方案呢?视频流比较专业,资料也比较少,都是简单的下载文件的方式下载,但是对于一个几个G的视频文件根本不现实。万幸NGINX1.14以上版本自动集成了MP4流的集成,只需要配置好就行了。正反射指向一个磁盘上的路径,正常的静态资源配置即可,然后默认以流的方式实现,这里要重点说一下,必须是MP4视频文件才行,FLV视频文件好像也支持,我没有试过,(主要是NGINX流视频服务器只支持这两种),然后内网环境打开测试,不同设备上实现,一两秒视频就可以加载实现播放,这种解决方案,简单但是适合访问量非常少的实现,大的访问量还是建议走第一个解决方案,那个方案专门适合企业级的。
NGINX流视频服务器方案,这里说一下为什么不适合企业级访问量高的解决方案,因为这个NGINX是以流媒体整个实现的,服务器负担比较重,家庭影院、个人NAS、访问量比较少的那种官网介绍视频等等完全适合这种方案。
本次问题解决视频播放逻辑处理问题不断找资料不断的实践,耗时两周到三周,终于解决,蹉跎了数日啊!
java web 自己开发NAS个人网盘、视频网站视频播放服务端大视频文件处理逻辑解决方案和思路相关推荐
- MyEclipse搭建java Web项目开发环境
MyEclipse搭建java Web项目开发环境 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭 ...
- java web开发myeclipse_【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)...
首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官网 ...
- Ubuntu打造家用NAS三——网盘与影视中心
Ubuntu打造家用NAS三--网盘与影视中心 一.Ubuntu 挂载硬盘 通过 Putty 连接 NAS 查看硬盘位置:sudo fdisk -l 找到需要挂载的硬盘,我的是"Disk / ...
- Java Web实用开发技术
Java Web实用开发技术 图形验证码 图形验证码的实现 图形验证码的生成 案例--带图形验证码的登陆模块 MD5加密 在线编辑器 CKEditor下载及配置 CKEditor的使用 文件的上传与下 ...
- 清华规划院 伟景行 诚聘 Jsp/Java/Web高级开发工程师 互联网开发主管 测试工程师 etc.
Jsp/Java/Web高级开发工程师 3人 岗位职责: 1. 参与公司网站(www.Gvitech.com)和数城网(www.diciti.com)的分析.规划.开发和维护工作: 2. 负责公 ...
- 为什么你需要一台NAS(网盘云盘vs路由器硬盘vsNAS)
系列文章 如何确保NAS的安全性(你的NAS被攻击了吗?) 如何使用NAS才能确保数据100%安全(数据存储解决方案) 搭建NAS之前你需要知道的哪些事 为什么你需要一台NAS(网盘云盘vs路由器硬盘 ...
- 基于spring boot开发的个人网盘
文章目录 前言 一.项目现阶段部分效果演示 二.项目数据库部分表设计 2.1. 创建user表.file表.logs表等sql语句 2.2 FileMapper.xml和FileMapper接口 三. ...
- java王者归来pdf_《JAVA WEB整合开发王者归来》刘京华.pdf
全书分为9篇,内容层次清晰,难度循序渐进.第1篇为入门篇,内容包括JavaWeb开发概述等:第2篇为基础篇,内容包括Servlet技术.JSP技术.会话跟踪.过滤器Filter.监听器Listener ...
- 面试时,当你有权提问时,别客气,这是个逆转的好机会(内容摘自Java Web轻量级开发面试教程)...
前些天,我在博客园里写了篇文章,如何在面试中介绍自己的项目经验,收获了2千多个点击,这无疑鼓舞了我继续分享的热情,今天我来分享另外一个面试中的甚至可以帮助大家逆转的技巧,本文来是从 java web轻 ...
- Java Web 高性能开发,前端的高性能
Java Web 高性能开发,第 2 部分: 前端的高性能 Web 发展的速度让许多人叹为观止,层出不穷的组件.技术,只需要合理的组合.恰当的设置,就可以让 Web 程序性能不断飞跃.Web 的思想是 ...
最新文章
- 如何正确遍历删除List中的元素,你会吗?
- requestmapping配置页面后_@RequestMapping接口及页面乱码问题
- 16.validate_api
- 那些你可能还不知道的新发明
- java 方法 示例_Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射...
- 如何在linux中使用u盘,如何在Linux系统下使用U盘
- KNN-K最近邻算法+实例应用
- 十六进制取反_技 术 | 你不知道的Java——04.十六进制
- POJ NOI MATH-7830 求小数的某一位
- Java毕设项目——网上宠物店管理系统(java+SSM+Maven+Mysql+Jsp)
- access里的多步oledb错误_access数据库常见问题处理
- 移动硬盘格式化了的数据找到法子
- jQuery库(1)
- 【如何拍出一条好的vlog】素材篇
- [转载]Z-stack 应用程序编程接口(API)-网络层
- ReentrantLock和synchronized锁
- 打开 Excel 提示 “文件格式和扩展名不匹配,文件可能已损坏或不安全” 的解决办法
- 计算机网络连接图标 红叉,win7电脑的网络连接图标出现红叉以及一直转圈的原因和解决方法...
- 我国计算机信息系统安全保护工作的重点是,网络信息安全知识:计算机信息系统的安全保护工作,重点维护国家事务、经济建设、国防建设、尖端科学技术等重要领域的()的安全。...
- win10 使用多桌面的两种方式
热门文章
- 快上车!薅腾讯羊毛!
- opencv将透明PNG图片填充为白色背景
- 什么叫机械硬盘_企业级机械硬盘和普通机械硬盘有什么区别
- 小米硬盘路由器服务器,随手分享攻略 篇九:小米路由器更换10T硬盘 —— 小白教程...
- 《设计模式》——接口隔离原则
- matlab冒号,括号的用法
- 计算机找不到u 盘,u盘做系统找不到引导分区-U 盘装系统怎么分区?
- android 手机ssh客户端,android手机ssh客户端ConnectBot
- 项目合同管理:合同分类、费用支付方式、违约责任承担方式、签订注意事项、合同索赔流程
- 在线分析仪器(四)在线气体分析成套系统简述