456 字
2 分钟
半小时创建视频点播站
起因
小伙伴想看视频却找不到在线资源也不想下载,怎么办?当然是自己搭建一个视频网站啦。
技术选型
- 为了不让小伙伴等急,打算直接使用现成的
nginx-rtmp。另外考虑到现在用的机器是和别人合租的,怕编译 nginx 的时候弄脏环境。因此使用docker环境。
安装 docker
- 安装过程细节直接读文档就行了 docker docs
为了方便之后不加sudo操作 docker,新增一个docker用户组sudo groupadd docker,将自己加入sudo usermod -aG docker $USER。然后重新登录。
搭建服务器
- 下载 nginx-rtmp 镜像
docker pull jasonrivers/nginx-rtmp - 然后去github - nginx-rtmp-module抄一份 nginx 配置文件
rtmp { server { listen 1935;
chunk_size 4000;
# video on demand for flv files application vod { play /var/flvs; }
# video on demand for mp4 files application vod2 { play /var/mp4s; } }}- 至此,我的目录结构是这样的
nginx├── html│ └── videos│ └── movie.mp4└── nginx.conf- 启动服务
docker run \--name nginx-rtmp \ # 容器名称--detach \ # 后台运行--read-only \ # 只读模式--expose 1935:1935 \ # 端口映射--volume $(pwd)/nginx.conf:/usr/local/nginx/conf/nginx.conf \ # 挂载配置文件--volume $(pwd)/html/videos:/var/mp4s \ # 挂载视频目录nytimes/nginx-vod-module- 使用支持 rtmp 的播放器打开
rtmp://www.domain.com:1935/vod2/movie.mp4 - 流畅播放,搞定
小伙伴说他没装支持 rtmp 的播放器
网页播放支持
- rtmp 想要在网页上播放只能使用 flash ,这显然不够清真。。。那就只能继续配置了。
- 在 docker 上找了一个现成的镜像 nginx-vod-module-docker
- 照着样例抄一遍配置得到 hls 流。
- 配置前端,我使用的是DPlayer
<html> <head> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dplayer@latest/dist/DPlayer.min.css" /> </head> <body> <div id="dplayer"></div> <script src="https://cdn.jsdelivr.net/npm/dplayer@latest/dist/DPlayer.min.js"></script> <script> const dp = new DPlayer({ container: document.getElementById("dplayer"), video: { url: "http://www.domain.com/hls/movie.mp4/master.m3u8", type: "hls", }, }); </script> </body></html>- 播放成功