搭建直播服务器

 2019-03-03 08:21:12  linux  蔡陶军
 (1147)  (0)

一、安装Linux服务器

    安装环境是Vmware11虚拟机软件、Centos-7系统镜像

    创建一台虚拟机,并安装好centos的操作系统,设置好ip地址

    通过设置配置文件/etc/sysconfit/network-script/ifcfg-enss来修改ip地址

    

    重启网卡服务 systemctrl restart network

    查看防火墙状态 systemctrl status firewalld  或者firewall-cmd --state

    禁用防火墙 systemctrl disable firewalld

    让虚拟机配置上网

二、安装Nginx服务器所需依赖

    安装gcc与gcc-c++

    yum -y install gcc gcc-c++

    安装pcre

    yum -y install pcre pcre-devel

    安装zlib

    yum -y install zlib zlib-devel

    安装ssl

    yum -y install openssl openssl-devel

    安装wget

    yum -y install wget

    安装git

    yum -y install git

三、下载nginx-rtmp-module

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

四、安装Nginx

    下载nginx、解压、编译、安装

  cd ~
    wget http://nginx.org/download/nginx-1.13.0.tar.gz
    tar –zxvf nginx-1.13.0.tar.gz
    cd nginx-1.13.0/
    ./configure –prefix=/usr/local/nginx –add-module=/usr/local/nginx-rtmp-module –with-http_ssl_module
    make
    make install

五、配置nginx

cd /usr/local/nginx/conf/
vim nginx.conf
在文件最后,http配置内容外创建一个
rtmp {
        server {
                listen 2019;
                chunk_size 4000;
                application live {
                        live on;
                        hls on;
                        hls_path /tmp/hls;
                        hls_fragment 5s;
                }
        }
}
再到监听80端口的虚拟主机下配置
location /stat {
rtmp_stat all;
    rtmp_stat_stylesheet stat.xsl;
}

location /stat.xsl {
root /usr/local/nginx-rtmp-module/;
}

六、运行nginx、测试

cd /usr/local/nginx/sbin

./nginx

通过命令curl http://localhost访问,如果能输出nginx默认欢迎页,说明nginx运行没问题

然后再通过命令curl http://localhost/stat,访问nginx-rtmp模块是否运行正常

当然也可以用浏览器打开查看。

七、windows下通过ffmpeg工具进行推流(主播)

我们需要推流到服务器上,然后再由服务器把流分发给客户端进行观看。

首先需要确保我们推什么流,流来自哪里?

音频、摄像头、屏幕窗口,都是我们获取数据流的来源。

我们可以通过安装Screen Capturer Recorder来进行获取屏幕窗口中的数据流,多用于直播演示电脑内容,下载地址https://sourceforge.net/projects/screencapturer/files             

Ffmpeg下载地址:https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-4.1.1-win64-static.zip

解压后,配置到系统path路径下,然后我们通过ffmpeg的命令来查看电脑系统中识别出来的设备名称,比如音频设备、摄像头设备、屏幕窗口设备

ffmpeg -list_devices 1 -f dshow -i dummy


这个命令最好在mingw中执行(windows系统中安装git后,打开git bash即可),不然cmd中运行显示的中文是乱码。

通过以下命令,把摄像头和音频流推送到nginx服务器:

ffmpeg -f dshow -i video="Integrated Camera":audio="内装麦克风 (Conexant SmartAudio HD)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency  -f flv rtmp://192.168.137.123:2019/hls_alic/

通过以下命令,把屏幕桌面和音频流推送到nginx服务器:

ffmpeg -f dshow -i video="screen-capture-recorder":audio="内装麦克风 (Conexant SmartAudio HD)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency  -f flv rtmp://192.168.137.123:2019/hls_alic/

推流其实也可以采用obs软件来进行图形界面方式的操作推流。

八、Windows下拉取流数据(观看)

我们可以用很多工具都可以进行拉取直播中的流:ffplay.exe、vlc播放器、video.js

ffplay通过以下命令:

ffplay.exe –x 640 –y 480 -window_title 直播测试 rtmp://192.168.137.123:2019/hls_alic/


Vlc播放器通过以下设置:



Video.js,需要下载5.x版本,新版本中都取消了flash,因为video.js就是通过falsh去播放rtmp协议的数据流


<html lang="en">

<head>

    <title>CCBLOG直播title>
    <link href="assets/front/plugins/videojs/video-js.min.css" rel="stylesheet">
    <script src="assets/front/plugins/videojs/video.min.js">script>
    <script>
        videojs.options.flash.swf = "assets/front/plugins/videojs/video-js.swf";
    script>

head>

<body>

  <video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264" 
    poster="http://www.caitaojun.comhttp://res.caitaojun.com/ccblog/image/a6083743bd344e84a7d294318924947b/302c94ab193b49538fc6eb0f9d001e9a.png" data-setup="{}">
<source src="rtmp://192.168.137.123:2019/hls_alic/" type="rtmp/flv"> <track kind="captions" src="assets/front/plugins/videojs/example-captions.vtt" srclang="en" label="English">track> <track kind="subtitles" src="assets/front/plugins/videojs/example-captions.vtt" srclang="en" label="English">track> <p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 videoa>p> video> body> html>

如果在chrome浏览器中,打开这个html页面无法播放,需要在chrome中设置该网页地址的访问flash为允许。




打赏, 我要小额赞助,鼓励作者写出更好的文章
<< 上一篇:Mysql优化
>> 下一篇:ctjdfs分布式存储系统v1.0

评论列表



您还没有登录,登录后才能发表评论,请【登录】