基于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
相关推荐
迷茫运维路7 分钟前
Jenkins声明式Pipeline流水线语法示例
运维·pipeline·jenkins·声明式
Zfox_24 分钟前
【Linux】进程信号全攻略(二)
linux·运维·c语言·c++
速盾cdn24 分钟前
速盾:vue的cdn是干嘛的?
服务器·前端·网络
安於宿命29 分钟前
【Linux】简易版shell
linux·运维·服务器
丶Darling.32 分钟前
MIT 6.S081 Lab1: Xv6 and Unix utilities翻译
服务器·unix·lab·mit 6.s081·英文翻译中文
追梦不止~36 分钟前
Docker常用命令+详解
运维·docker·容器
黑龙江亿林等保40 分钟前
深入探索哈尔滨二级等保下的负载均衡SLB及其核心算法
运维·算法·负载均衡
黄小耶@40 分钟前
linux常见命令
linux·运维·服务器
叫我龙翔42 分钟前
【计网】实现reactor反应堆模型 --- 框架搭建
linux·运维·网络
古驿幽情44 分钟前
CentOS AppStream 8 手动更新 yum源
linux·运维·centos·yum