Ngnix 搭建视频直播服务器[通俗易懂]

Ngnix 搭建视频直播服务器[通俗易懂]受疫情推迟开学影响,这段时间全国如火如荼推广网络教学,前段时间搭建了edx慕课平台,但还缺点什么,就是网络直播教学,花一天时间,搭建成功,记录备用。1.基本技术路线其中,服务器采用nginx+nginx-rtmp-module,推流采用OBS-Studio,拉流采用html5网页播放2.直播服务器安装环境centos7,没有安装桌面图形界面,server版y…

大家好,又见面了,我是你们的朋友全栈君。

受疫情推迟开学影响,这段时间全国如火如荼推广网络教学,前段时间搭建了edx慕课平台,但还缺点什么,就是网络直播教学,花一天时间,搭建成功,记录备用。

1. 基本技术路线

Ngnix 搭建视频直播服务器[通俗易懂]

其中,服务器采用 nginx + nginx-rtmp-module,推流采用 OBS-Studio,拉流 采用html5网页播放

2. 直播服务器安装

环境 centos7,没有安装桌面图形界面,server版

yum install -y gcc
yum install -y openssl openssl-devel
yum insall -y pcre pcre-devel
yum install -y zlib zlib-devel

git clone https://github.com/arut/nginx-rtmp-module.git

wget http://nginx.org/download/nginx-1.9.9.tar.gz

 tar -zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9

./configure –prefix=/usr/local/nginx –add-module=/root/nginx-rtmp-module –with-http_ssl_module
 make && make install

正常编译安装后可以看到 /usr/local/nginx  目录

配置文件

nano /usr/local/nginx/conf/nginx.conf

加入如下配置

rtmp {

    server {

    listen 1935;  #监听的端口
        chunk_size 4000;   #流整合的最大的块大小,这个值设置的越大 CPU 负载就越小
        #增加对hls的支持
        application hls {  #rtmp推流请求路径
            live on;   #开启实时
            hls on;   #开启hls
            hls_path /usr/local/nginx/html/hls; #推流文件保存的路径,要有写入权限
            hls_fragment 5s;   # 每个文件包含5秒的视频内容
        }

        application hls1 {    # 第二直播频道 …
            live on; 
            hls on;  
            hls_path /usr/local/nginx/html/hls1; 
            hls_fragment 10s;  
        }
    }
}

保存后启动服务器

./sbin/nginx -c ./conf/nginx.conf

如修改配置后  nginx -s reload 命令重新读取配置

3. 推流直播  

OBS-Studio-23.2.1-Full-x64  网上下载的绿色版本,无需安装,解压即可使用

Ngnix 搭建视频直播服务器[通俗易懂]

配置推流服务器,串流密钥就是服务器上保存串流缓存的文件名

如果推流正常,在/usr/local/nginx/html/hls 目录下可以看到生成的文件

[root@gdcmxy sbin]# ls /usr/local/nginx/html/hls
stream-0.ts  stream-1.ts  stream.m3u8
4. 拉流,也就是播放直播啦

采用html5 网页

<!DOCTYPE html>
<html>
    <head>
    <title>播放器</title>
        <!– 导入的videojs是7.0版本以上的,集成VHS协议库,可播放HLS流媒体视频 –>
        <link href=”css/video-js.min.css” rel=”stylesheet” type=”text/css”>
        <script src=”js/video.min.js”></script>
        <!– 引入的videojs-flash.js插件主要是为播放rtmp视频流–>
        <script src=”js/videojs-flash.min.js”></script>
    </head>
    <body>
    <video id=’myvideo’ width=960 height=540 class=”video-js vjs-default-skin” con$
            <!– RTMP直播源地址–>
            <source src=”http://192.168.49.129/hls/stream.m3u8″>
        </video>
        <script>
            var player = videojs(‘myvideo’, {}, function(){console.log(‘videojs播放器 $
            player.play();
        </script>
    </body>
</html>

Ngnix 搭建视频直播服务器[通俗易懂]

正常使用直播

5. 直播现成的视频文件

可以在服务器安装 ffmpeg 作为播放源

安装:

yum install -y epel-release rpm
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum repolist
rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum repolist
yum install -y ffmpeg

使用:

ffmpeg -re -i testvideo.mp4 -c copy -f flv rtmp://192.168.49.129:1395/live/stream

下图左边是播放效果,右边是ffmpeg在推流

Ngnix 搭建视频直播服务器[通俗易懂]

 

下图播放视频文件,两路推流,两路拉流,画面流畅,没有压力

Ngnix 搭建视频直播服务器[通俗易懂]

参考多篇文章,不在此列出,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132419.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Parallel.ForEach() 并行循环[通俗易懂]

    Parallel.ForEach() 并行循环[通俗易懂]现在的电脑几乎都是多核的,但在软件中并还没有跟上这个节奏,大多数软件还是采用传统的方式,并没有很好的发挥多核的优势。微软的并行运算平台(Microsoft’sParallelComputingPlatform(PCP))提供了这样一个工具,让软件开发人员可以有效的使用多核提供的性能。Parallel.ForEach()和Parallel.For()就是微软并发类的成员。今天做了一个简…

    2022年7月19日
  • 访问服务器出现406问题[通俗易懂]

    解决方式1、查看Jackson包是否存在2、如果url后缀是.html是不能响应json数据的,需要修改后缀名

    2022年4月9日
  • 网络协议学习–SOAP协议(一)

    网络协议学习–SOAP协议(一)学习了soap协议,介绍了关键的组成部分,rpc,http协议,xml,wsdl文件,以及用postman模拟soap进行测试。

    2022年7月15日
  • java volatile原理

    java volatile原理一、基本概念先补充一下概念:Java内存模型中的可见性、原子性和有序性。可见性:  可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。  可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是…

    2022年7月18日
  • Cookie–记住上一次访问时间案例(Java)

    Cookie–记住上一次访问时间案例(Java)Cookie–记住上一次访问时间案例(Java)博客说明文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!需求访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串分析可以采用Cookie来完成在服务器中的Servlet判断是否有一个名为lastTime的cookie有:不是第一次访问响应数据:欢迎回来,您上次访问时间为:2020年

    2022年7月8日
  • 最小二乘法推导以及理解[通俗易懂]

    最小二乘法推导以及理解[通俗易懂]我在网上发现了两种推导方式,于是自己跟着推导了一遍。。。。。(一)(高数式推导): [参考博客](https://blog.csdn.net/MarsJohn/article/details/54911788) 这里先引入两个提前推得出的结论: ![两个结论](https://img-blog.csdnimg.cn/20190907195440348.jpg?x-oss-proce…

    2022年5月17日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号