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/[email protected]/dist/hls.min.js"></script>
<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>
- 播放成功