456 字
2 分钟
半小时创建视频点播站
2018-07-10

起因#

小伙伴想看视频却找不到在线资源也不想下载,怎么办?当然是自己搭建一个视频网站啦。

技术选型#

  • 为了不让小伙伴等急,打算直接使用现成的nginx-rtmp。另外考虑到现在用的机器是和别人合租的,怕编译 nginx 的时候弄脏环境。因此使用docker环境。

安装 docker#

为了方便之后不加sudo操作 docker,新增一个docker用户组sudo groupadd docker,将自己加入sudo usermod -aG docker $USER。然后重新登录。

搭建服务器#

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>
  • 播放成功

参考文献#

半小时创建视频点播站
https://www.waterwater.moe/posts/2018/2018-07-10_半小时创建视频点播站/
作者
whitewater
发布于
2018-07-10
许可协议
CC BY-NC-SA 4.0