当前位置:   article > 正文

使用Nginx代理访问服务器的.mp4文件,并使用Vue播放_nginx代理视频文件

nginx代理视频文件

一、使用Docker部署单节点Nginx

1、在CentOS上安装部署Docker

请参考:https://blog.csdn.net/yueyue763184/article/details/126776158?spm=1001.2014.3001.5502

2、拉取最新版Nginx镜像

docker pull nginx

3、创建后面需要映射的文件夹

mkdir -p /home/nginx/www /home/nginx/logs /home/nginx/conf

4、先启动预备Nginx,仅仅用于获取配置文件

docker run -d -p 9001:80 --name nginx0 -v /home/nginx/www:/usr/share/nginx/html -v /home/nginx/logs:/var/log/nginx  nginx

进入nginx0容器:

docker exec -it nginx0 /bin/bash

查看nginx.conf配置文件位置:

5、拷贝,修改nginx.conf文件

exit或者Ctrl+D退出容器,然后拷贝配置文件:

  1. cd /home/nginx
  2. docker cp nginx0:/etc/nginx/nginx.conf conf/nginx.conf

修改 nginx.conf 配置文件:

vim conf/nginx.conf
  1. user root;
  2. worker_processes 1;
  3. error_log /var/log/nginx/error.log warn;
  4. pid /var/run/nginx.pid;
  5. events {
  6. worker_connections 1024;
  7. }
  8. http {
  9. include /etc/nginx/mime.types;
  10. default_type application/octet-stream;
  11. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  12. '$status $body_bytes_sent "$http_referer" '
  13. '"$http_user_agent" "$http_x_forwarded_for"';
  14. access_log /var/log/nginx/access.log main;
  15. sendfile on;
  16. #tcp_nopush on;
  17. keepalive_timeout 65;
  18. #gzip on;
  19. include /etc/nginx/conf.d/*.conf;
  20. server {
  21. listen 80;
  22. server_name localhost;
  23. charset utf-8;
  24. location /images/ {
  25. alias /home/nginx/www/images;#ok
  26. autoindex on; ##显示索引
  27. autoindex_exact_size on; ##显示大小
  28. autoindex_localtime on; ##显示时间
  29. }
  30. error_page 404 /404.html;
  31. }
  32. }

在/home/nginx/www目录下创建images文件夹,并上传.mp4文件在其下

 接下来就可以删除nginx0,重新创建运行一个容器nginx:

  1. docker stop nginx0
  2. docker rm nginx0
  3. docker run -d -p 9001:80 --name nginx -v /home/nginx/www:/usr/share/nginx/html -v /home/nginx/logs:/var/log/nginx nginx

 确保防火墙9001端口已经开了,就可以远程访问了: 

 二、在Vue中播放.mp4视频

 主要是使用video来播放

npm install video.js --save

index.vue

  1. <template>
  2. <div>
  3. <span class="spheader">监控视频:</span>
  4. <!-- 视频 -->
  5. <div v-for="item in videoUrl" class="sp">
  6. <video id="myVideo" ref="myVideo" controls class="shiping1 video-js vjs-big-play-centered">
  7. <source :src="item.url" type="video/mp4" >
  8. </video>
  9. <!-- 时间 -->
  10. <span class="time">{{item.time}}</span>
  11. </div>
  12. </div>
  13. </template>
  14. <script>
  15. import Video from 'video.js'
  16. import 'video.js/dist/video-js.css'
  17. export default {
  18. data() {
  19. return {
  20. playHandler: null,
  21. videoUrl: [
  22. {"url": 'http://ip:9001/images/222.mp4', "time": "2023-03-06 12:10:00"},
  23. {"url": 'http://ip:9001/images/333.mp4', "time": "2023-03-06 12:06:00"},
  24. {"url": 'http://ip:9001/images/222.mp4', "time": "2023-03-06 12:03:00"}
  25. ]
  26. }
  27. },
  28. updated() {
  29. // 初始化获取数据
  30. this.fetchVideoList(this.id)
  31. setTimeout(() => {
  32. this.initVideo()
  33. }, 300)
  34. this.playHandler.dispose()
  35. },
  36. async initVideo() {
  37. this.$nextTick(() => {
  38. this.playHandler = Video('myVideo', {
  39. // 确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。
  40. controls: true,
  41. // 自动播放属性,muted:静音播放
  42. autoplay: 'muted',
  43. // 建议浏览器是否应在<video>加载元素后立即开始下载视频数据。
  44. preload: 'auto',
  45. // 设置视频播放器的显示宽度(以像素为单位)
  46. width: '650px',
  47. // 设置视频播放器的显示高度(以像素为单位)
  48. height: '400px'
  49. })
  50. })
  51. },
  52. /**
  53. * @function 获取视频素材详情
  54. */
  55. async fetchVideoList(id) {
  56. const res = await materialApi.query({id})
  57. if (res.code === 0) {
  58. this.form = res.data
  59. this.$refs.myVideo.src = res.data.cosPath
  60. console.log(this.form, 'this.video.form', this.$refs.myVideo.src)
  61. }
  62. }
  63. }
  64. </script>
  65. <style>
  66. @import "./index.css";
  67. </style>

index.css

  1. .sp{
  2. margin: 30px 0 0 30px;
  3. width:350px;
  4. height:250px;
  5. float:left;
  6. }
  7. .shiping1{
  8. border: 2px solid black;
  9. width: 100%;
  10. height: 200px;
  11. float:left;
  12. }
  13. .spheader{
  14. color: #254765;
  15. font-size: 18px;
  16. position: absolute;
  17. left: 220px;
  18. top: 70px;
  19. }
  20. .time{
  21. color: #254765;
  22. position: relative;
  23. top: 10px;
  24. }

效果: 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/79525
推荐阅读
相关标签
  

闽ICP备14008679号