1、问题
- 直接放在WEB目录下,文件不安全,没有认证可以直接访问;
- PHP认证通过后返回WEB目录下的真实文件地址,不安全,访问一次后后续可以直接访问;
- 用PHP读MP4文件然后再输出:加载速度、内存占用、快进快退都会有问题;
2、解决思路:
- 采用php认证后nginx播放
- 转hls后加密播放
3、PHP认证后nginx播放
在nginx中配置:
# 这里使用internal做下载防护,只允许内部程序(PHP等)访问,这样外部直接访问这个地址就会提示404错误 location ~ \.mp4$ { internal; # 这里的路径配置是可选的,可以配置到网站外部,和其他location里的配置路径是一个意思,可以更好的防止文件被通过网址下载 root /opt/video; }
在PHP中在认证通过后,写:
header('X-Accel-Redirect:/20220822/06.mp4')
将带认证的php文件作为video标签的src,就能播放服务器上:/opt/video/20220822/06. mp4 文件。
存在的问题及解决方法:
nginx这种写法可能导致所有的mp4请求都走/opt/video,如果之前有已经存放在web目录下直接访问的mp4文件,需要兼容已有程序,这么做:
location /28dfs238deswh9HJGAS38/ { internal; alias /opt/video; }
php里这么写:
header('X-Accel-Redirect:/28dfs238deswh9HJGAS38/20220822/06.mp4')
4、转hls后的加密播放(未完待续)
标签:文件,播放,mp4,认证,MP4,video,PHP 来源: https://www.cnblogs.com/dwj192/p/16612690.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。