基于Nginx搭建点播直播服务器

实现直播和点播离不开服务器⽀持,可以使用开源的NGINX服务器搭建直播和点播服务。
当然,NGINX本身是不⽀持视频的,需要为NGINX增加相应的RTMP模块进行支持。

1、下载nginx和rtmp模块

bash 复制代码
# nginx
wget ht
tp://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
# nginx-http-flv-module
wget https://github.com
/winshining/nginx-http-flv-module/archive/master.zip
unzip master.zip

2、使用源码进行编译

bash 复制代码
# 安装操作系统的依赖项
sudo yum install gcc make pcre pcre-devel openssl openssl-devel make curl wget unzip vim
# 在nginx中进⾏配置
./configure --add-module=../nginx-http-flv-module-master
# 编译构建产品 如无权限 则输入 sudo make && sudo make install
make & make install 

由于C语⾔的编译⾮常依赖服务器的各种类库,所以很容易出现各种各样的问题。
如果⼀切正常,那么就会在/usr/local/nginx目录下搭建起nginx服务,使用nginx -v,能看到版本输出,就表示,nginx服务安装成功了。
如果命令不存在 当前用户环境下仍然无法找到 nginx 命令。这通常是因为 /usr/local/nginx/sbin 目录没有被添加到系统的 PATH 环境变量中

解决方法
临时解决方案:直接使用完整路径来运行 nginx 命令。

bash 复制代码
/usr/local/nginx/sbin/nginx -v

永久解决方案:
将 /usr/local/nginx/sbin 添加到系统的 PATH 环境变量中。
打开 ~/.bash_profile 文件:

bash 复制代码
vi ~/.bash_profile

添加 Nginx 的路径到 PATH:

在文件末尾添加以下内容:

bash 复制代码
export PATH=$PATH:/usr/local/nginx/sbin

保存并退出:

按 Esc 键返回普通模式。

输入 :wq 并按 Enter 键保存更改并退出 vi。

使配置文件生效:

bash 复制代码
source ~/.bash_profile

验证配置:

bash 复制代码
# root 权限查找 nginx 可执行文件的位置
which nginx
nginx -v

3、测试点播服务

点播服务需要将视频⽂件上传到服务器中。在服务器的/usr/local/nginx/vod⽬录中提前上传⼀个xxx.mp4视频文件。
需要网络demo资源的自行下载https://mirror.aarnet.edu.au/pub/TED-talks/

https://media.w3.org/2010/05/sintel/trailer.mp4

随便下一个测试用
然后进⼊/usr/local/nginx/conf ⽬录下修改nginx.conf,添加以下⽚段

XML 复制代码
rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application vod{
            play /usr/local/nginx/vod;
        }
    }
}

修改配置文件后,使⽤nginx -t指令检查配置⽂件的正确性。
如果检查没有问题,就可以使⽤ nginx指令启动nginx服务。正常的话,访问服务器的80端口,就能够看到 nginx的页面。
客户端需要使⽤流媒体播放器查看视频。VLC就是⼀个免费开源的流媒体播放器。事实上很多商用的播放器都是根据VLC修改得到。
在VLC中打开⼀个网络地址: rtmp://192.168.xx.xxx:1935/vod/xxx.mp4 (填上自己的ip、视频名称) 就可以直接播放服务器上的视频文件

碰到无法上传视频的参考这个帖子
virtualbox安装centos7,共享文件夹及其正确的挂载,网络与IP设置完整教程_virtual box centos7自动挂载-CSDN博客

bash 复制代码
# 启动nginx
./nginx

#重启
sudo ./nginx -s reload
相关推荐
IT成长日记10 分钟前
【自动化运维神器Ansible】Playbook中的when条件判断:精细化控制任务执行
运维·自动化·ansible·playbook·when·条件判断
昵称为空C2 小时前
SpringBoot接口限流的常用方案
服务器·spring boot
Peter_Deng.3 小时前
Linux 下基于 TCP 的 C 语言客户端/服务器通信详解(三个示例逐步进阶)
服务器·c语言·网络
HYI3 小时前
小公司前端多分支测试太痛苦?我自己写了个轻量 CLI
nginx·vite
杭州泽沃电子科技有限公司4 小时前
告别翻山越岭!智能监拍远程守护输电线路安全
运维·人工智能·科技·安全
长臂人猿5 小时前
JVM常用工具:jstat、jmap、jstack
linux·运维·jvm
檀越剑指大厂7 小时前
【Linux系列】如何在 Linux 服务器上快速获取公网
linux·服务器·php
共享家95277 小时前
linux-高级IO(上)
java·linux·服务器
timeweaver7 小时前
深度解析 Nginx 前端 location 配置与优先级:你真的用对了吗?
前端·nginx·前端工程化
HWL56799 小时前
“preinstall“: “npx only-allow pnpm“
运维·服务器·前端·javascript·vue.js