资讯专栏INFORMATION COLUMN

CentoS7搭建直播服务器

BlackHole1 / 1460人阅读

摘要:搭建直播服务器资源地址推流关于是苹果公司实现的基于的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如协议协议协议等,直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。

CentoS7搭建直播服务器
资源地址    
nginx-rtmp: https://github.com/arut/nginx...
OBS推流: https://obsproject.com/
关于HLS

HTTP Live Streaming(HLS)是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。

下载nginx源码包
cd /tmp

#wget http://nginx.org/download/nginx-1.14.0.gar.gz
# 使用华为云镜像
wget https://mirrors.huaweicloud.com/nginx/nginx-1.14.0.tar.gz

# 解压缩
tar -xvzf ./nginx-1.14.0.tar.gz
下载nginx-rtmp源码
# 下载nginx-rtmp模块源码
wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz

# 解压缩,这个需要用到,转入正式目录
tar -xvzf ./v1.2.1.tar.gz
mv /tmp/nginx-rtmp-module-1.2.1 /usr/local/nginx-rtmp-module
更新相关依赖包
yum -y install pcre* openssl openssl-devel
创建用户和组
# 创建组
groupadd nginx

# 创建不允许登录,无主目录的用户
useradd -s /sbin/nologin -g nginx -M nginx
安装nginx跟rtmp模块
cd /tmp/nginx-1.14.0

./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=/usr/local/nginx-rtmp-module  

make & make install
参数 说明
--user=nginx 指定运行权限的用户
--group=nginx 指定运行的权限用户组
--prefix=/usr/local/nginx 指定安装路径
--with-http_stub_status_module 支持nginx状态查询
--with-http_ssl_module 开启ssl支持
--with-http_gzip_static_module 开启GZIP功能
--add-module=/usr/local/nginx-rtmp-module 添加nginx-rtmp-module模块
创建服务
vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true


[Install]
WantedBy=multi-user.target
nginx全局配置
vim /usr/local/nginx/conf/nginx.conf

user  nginx;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  "$remote_addr - $remote_user [$time_local] "$request" "
                      "$status $body_bytes_sent "$http_referer" "
                      ""$http_user_agent" "$http_x_forwarded_for"";

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;
    
    keepalive_timeout  65;
    
    #gzip  on;
    
    include ./conf.d/*.conf;

}

rtmp {
    server {
        # 监听端口
        listen 1935;
        chunk_size 2048;

        # HLS
        # For HLS to work please create a directory in tmpfs (/tmp/hls here)
        # for the fragments. The directory contents is served via HTTP (see
        # http{} section in config)
        #
        # Incoming stream must be in H264/AAC. For iPhones use baseline H264
        # profile (see ffmpeg example).
        # This example creates RTMP stream from movie ready for HLS:
        #
        # ffmpeg -loglevel verbose -re -i movie.avi  -vcodec libx264
        #    -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1
        #    -f flv rtmp://localhost:1935/hls/movie
        #
        # If you need to transcode live stream use "exec" feature.
        #

        # rtmp推流请求路径
        application hls {
            # 开启实时
            live on;

            # 开启hls
            hls on;

            # 对视频切片进行保护,这样就不会产生马赛克了
            wait_key on; 

            # rtmp推流请求路径,文件存放路径
            hls_path /data/video/hls;

            # 每个TS文件包含视频内容的长度
            hls_fragment 2s;

            # 总共可以回看的事件
            hls_playlist_length 60s;

            # 连续模式
            hls_continuous on;

            # 对多余的切片进行删除
            hls_cleanup on;

            # 嵌套模式
            hls_nested on;
        }
    }
}
配置视频
# 创建配置目录(在nginx.conf里面指定了include)
mkdir /usr/local/nginx/conf/conf.d

vim /usr/local/nginx/conf/conf.d/video.conf

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/master.access.log  main;

    location / {
        root   /usr/local/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/local/nginx/html;
    }

    # http播放地址
    location /live {
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        alias /data/video/hls;   
        expires -1;
        add_header Cache-Control no-cache;
    }

    # 统计
    location /stat {
        rtmp_stat all;
        rtmp_stat_stylesheet stat.xsl;
    }

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

}
防火墙配置
# 开启端口,1935推流,725统计
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=1935/tcp --permanent
firewall-cmd --reload
推流 ffmpeg推流
ffmpeg -re -i "e:video2.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.1.244:1935/hls/flv

ffmpeg -re -i "e:video02.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 340x640 -q 10 rtmp://192.168.1.244:1935/hls/flv

ffmpeg -re -i "e:video2.mp4" -f flv "rtmp://192.168.1.244:1935/hls/flv" 
OBS推流

下载最新客户端: https://obsproject.com/

流类型选择自定义流媒体服务器

流名称设置二级目录名

以ffmpeg推流的地址为例:rtmp://192.168.1.244:1935/hls/flv
流URL:rtmp://192.168.1.244:1935/hls
流名称:flv

推流服务统计

http://192.168.1.244/stat

客户端播放

使用plyr.jshls.js
播放地址:http://192.168.1.244/live/flv...




  
  
  
  
  直播
  



文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/34733.html

相关文章

  • 从视频直播软件开发到直播搭建完毕,不需要硬件设备

    摘要:比较节约资金这点就不过多解释了,同等性能的情况下,云服务器比物理服务器节约资金,还不用自己维护。前几天有个朋友找上我,问我直播间搭建是不是要搭建到服务器上?我说是呀,他又说直播平台受众遍布全国,那服务器岂不是要买很多个,放在世界各地,还得找人专门维护,那这笔支出未免太大了,不是一般人真弄不起啊我:……额……不是!没有!你听我解释! 在我和朋友的这段对话中,我们可以看到,在朋友眼里,视频直播软...

    waruqi 评论0 收藏0
  • 一对一源码搭建直播平台,需要如何选择云务器才能带的动

    摘要:一对一源码是搭建一对一直播平台家教平台等所需的源码,那么有了源码以后我们该如何选择云服务器呢服务器又在搭建一对一直播平台的过程中起到什么样的作用呢我们一起来看看。一对一源码是搭建一对一直播平台、家教平台等所需的源码,那么有了源码以后我们该如何选择云服务器呢?服务器又在搭建一对一直播平台的过程中起到什么样的作用呢?我们一起来看看。 一、服务器的定义、种类 服务器是提供计算服务的设备,它被用于响...

    Lavender 评论0 收藏0
  • 极速搭建RTMP直播务器+webapp (vue) 简单实现直播效果

    摘要:极速搭建简单直播流服务器开发环境需要安装并启动如果是自己使用搭建直播服务器,毕竟是接触这个不到半天,还是有点复杂,编译设置有点繁琐。 在尝试使用webRTC实现webapp直播失败后,转移思路开始另外寻找可行的解决方案。在网页上尝试使用webRTC实现视频的直播与看直播,在谷歌浏览器以及safari浏览器上测试是可行的。但是基于基座打包为webapp后不行,所以直播的话建议还是原生的好。HB...

    番茄西红柿 评论0 收藏0
  • LNMP环境搭建(一):Mysql

    摘要:如果在未删除的情况下尝试在任一服务器上进行安装,安装将终止并显示一条错误消息以指向卸载卸载默认安装了编译安装官方文档下载相关源码下载,的相关依赖安装依赖是一个跨平台的安装编译工具,可以用简单的语句来描述所有平台的安装编译过程。 安装虚拟机 出于学习目的选择最小安装 选择启动项「第一项正常启动、第二项是修复模式」 showImg(https://segmentfault.com/img/...

    skinner 评论0 收藏0
  • 详细教程:如何搭建一个 iOS 系统的视频直播 App?

    摘要:目前,主流视频直播网站使用的协议多为和。我们以播放视频的举例,搭建一个直播。基于,采用架构设计的云巴实时通信云服务,是一个模型的双向实时系统,通过透明传输,可为直播平台实现所有的实时消息传输。我们登录云巴的网站进行注册并登录。 现今,直播市场热火朝天,不少人喜欢在手机端安装各类直播 App,便于随时随地观看直播或者自己当主播。作为开发者来说,搭建一个稳定性强、延迟率低、可用性强的直播平...

    snifes 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<