• 如何使用Nginx-rtmp搭建简易的HLS直播系统


    在网上也有一些关于使用Nginx-rtmp来搭建直播系统的教程,可是都是使用rtmp协议,然而rtmp在网页端只能通过Flash player插件进行播放,因为现在的浏览器已经陆陆续续不支持Flash player插件,所以使用rtmp协议做直播是不支持网页端播放。

    然而Nginx-rtmp不止支持rtmp协议,而且还支持hls协议,hls协议对网页播放非常友好,今天我就带大家学习一下使用Nginx-rtmp搭建简易的hls直播系统。

     

    专业术语

    rtmp协议:RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

    hlv协议:HLS (HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

     

    一、 工具与环境

    Ubuntu 18.04:Linux操作系统

    Nginx 1.8.1:一个高性能的HTTP和反向代理web服务器

    nginx-rtmp-module:Nginx的rtmp模块

    FFmpeg:是一个多媒体框架,可以对视频进行编解码、推拉流等功能的强大工具

    VLC media player:一款支持流媒体的视频播放器

     

    二、 安装Nginx与nginx-rtmp_module

    网上有很多基于源码的安装教程,步骤是有点繁琐,这里教大家用PPA源直接安装Nginx和nginx-rtmp-module模块,命令如下:

    $ sudo add-apt-repository ppa:nginx/stable
    
    $ sudo apt update
    
    $ sudo apt install nginx
    
    $ sudo apt-get install libnginx-mod-rtmp

     

    运行这四行命令,就可以把Nginx和nginx-rtmp-module模块安装上。

     

    三、 配置Nginx

    rtmp {
    
        server {
    
            listen 1935;
    
            application hls {
    
                live on;
    
                hls on;
    
                hls_path /data/nginx/rtmp/hls;
    
            }
    
        }
    
    }

    以上是配置hls的推流配置

    location /hls {
    
            types {
    
                application/vnd.apple.mpegurl m3u8;
    
                video/mp2t ts;
    
            }
    
            alias /data/nginx/rtmp/hls;
    
            add_header Cache-Control no-cache;
    
    }

    以上是配置hls的拉流配置

     

    四、 使用FFmpeg对摄像头进行推流

    在本地安装FFmpeg工具。

    1. 查看电脑设备

    $ ffmpeg -list_devices true -f dshow -i dummy

     

     

     

    我们可以看到电脑里有“HD Webcam”摄像头和“麦克风 (2- Realtek High Definition Audio)”麦克风。

     

    2. 测试摄像头是否可用

    $ ffplay -f dshow -i video="HD Webcam"
    
    或
    
    $ ffplay -f vfwcap -i 0

     

    当看到这个画面就证明摄像头可用。

     

    3. 推流摄像头与麦克风

    $ ffmpeg -f dshow -i video="HD Webcam"
     -f dshow -i audio
    ="麦克风 (2- Realtek High Definition Audio)"
     -vcodec libx264 -preset:v ultrafast -tune:v zerolatency
     -f flv  rtmp://192.168.1.5:1935/hls/live

     

    其中rtmp://192.168.1.5:1935/hls/live里的IP为你服务器的IP地址。

      

    4. 播放直播视频

    a. 使用VLC media player播放视频

    在本地安装VLC media player并打开

     

     

    点击“媒体”->“开开网络串流”

     

     

    输入视频地址:http://192.168.1.5/hls/live.m3u8,点击“播放”即可播放视频

     

    b. 使用网页播放视频

    创建文件video.html,输入以下代码:

    <video src="http://192.168.1.5/hls/live.m3u8" controls="controls">
    您的浏览器不支持 video 标签。
    </video>

     

    使用浏览器打开video.html,即可播放视频

     

    五、 结语

    到此为止,一个直播系统已经完美搭建成功。可是这个直播系统有个比较严重的问题,就是hls协议的延时比较严重,通常有8-10秒的延时,可通过配置来降低延时,但是效果也不太理想。对于一些不太注重延时的需求还是可以满足的。

    接下来我会教大家搭建更高级别的直播系统,可实现实时的直播需求,敬请关注。

  • 相关阅读:
    笔记本无线网卡和有线网卡同时用及网络知识回顾总结
    DSPack初次使用小结
    常见加解密算法及Delphi应用程序图标总结
    Delphi窗体创建释放过程及单元文件小结
    怪异的JavaScript的Case语句
    交换机与路由器的区别
    DirectShow学习笔记总结
    Git的提交与查看差异
    Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
    laravel5的Bcrypt加密方式对系统保存密码的小结
  • 原文地址:https://www.cnblogs.com/eflypro/p/14986740.html
Copyright © 2020-2023  润新知