zoukankan      html  css  js  c++  java
  • 流媒体服务器部署及直播和点播

    一、流媒体服务器部署

    1.准备虚拟机Centos 74操作系统

    2.更改为阿里的yum源

    yum install  -y  wget    #下载wget软件
    
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup  #备份
    
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
    
    运行 yum makecache 生成缓存

    3.安装依赖

    yum install -y gcc-c++ zlib pcre openssl openssl-devel    #c语言程序需要的依赖

    4.下载扩展模块

      Nginx本身只是一个服务器,对流媒体并没有支持,所以我们要下载对应的模块来扩展其功能。

      MP4模块:http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz

      FLV模块:http://sourceforge.net/projects/yamdi/files/yamdi/yamdi-1.9.tar.gz

      直播流模块:https://github.com/adwpc/nginx-rtmp-module

      FastDFS模块:https://github.com/happyfish100/fastdfs-nginx-module

    5.上传所有模块到虚拟机

    mkdir /opt/nginx
    
    cd /opt/nginx
    
    rz nginx-1.8.1.tar.gz
    
    rz nginx_mod_h264_streaming-2.2.7.tar.gz
    
    rz yamdi-1.9.tar.gz
    
    rz nginx-rtmp-module-master

    6.解压所有模块

    tar  -zxvf yamdi-1.9.tar.gz
    
    tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz 
    
    yum install -y unzip #解压用的
    
    unzip nginx-rtmp-module-master.zip 
    
    tar -zxvf  tar -zxvf nginx-1.8.1.tar.gz 

    7.安装flv模块到系统

    cd yamdi-1.9
    
    ./configure
    
    make && make install

    8.更改nginx_mod_h264_streaming文件

    cd /opt/nginx/nginx_mod_h264_streaming-2.2.7/src
    
    vim ngx_http_streaming_module.c 

      157gg到157行

      注释157行-161行

      

    9. 安装nginx并添加模块

    cd /opt/nginx/nginx-1.8.1
    
    ./configure --add-module=../nginx_mod_h264_streaming --add-module=../nginx-rtmp-module-master  --with-http_ssl_module   --prefix=/opt/software/nginx   --with-http_flv_module  --with-    http_stub_status_module

      --add-module 安装扩展插件

      --prefix  安装在哪里

      --with-  使用系统内置的模块 已经安装完毕 关联

      ..上一级

      如果出现错误

      

    vim objs/Makefile

       

       去掉-Werror保存退出

    make && make install

    10.配置一下conf文件

      nginx就是一个服务器 

      一个 nginx.conf中可以配置 多个  服务器

      一个服务器可以监听1个端口

    cd  /opt/software/nginx/conf
    vim nginx.conf

      添加如下代码

    location ~ .flv {
                flv;
    }
    location ~ .mp4$ {
                 mp4;
    }

      

       location 规则1  location /  root配置的目录下 去找这个文件 /html

      location 规则2   ~ .flv$  flv文件结尾  flv 模块

      location 规则3   ~ .mp4$  mp4文件结尾  mp4 模块

      当访问http://ip:80/test.mp4

      会挨个匹配规则

      匹配第一个规则  location /   /html这个目录下去找test.mp4

      匹配第二个规则  ~.flv$     不满足这个规则 

      匹配第三个规则  ~.mp4$     满足这个规则  mp4模块来处理

    11.启动nginx

      上传一个test.mp4视频到/opt/nginx/nginx-1.8.1/html目录下

    cd /opt/software/nginx/sbin
    
    ./nginx

      可到浏览器访问http://ip:80/test.mp4播放视频

    二、视频切片优化

      要用到ffmpeg切片

      下载地址     https://ffmpeg.zeranoe.com/builds/

      他的依赖程序yasm

      下载地址    https://linux.softpedia.com/get/Programming/Assembler-Tools/Yasm-621.shtml#download

      cd /opt/nginx

    1.上传

    rz ffmpeg-4.2.2.tar.bz2
    
    rz yasm-1.3.0.tar.gz

    2.解压

    yum install bzip2   #因为后缀是bz2的 要安装 bzip2
    tar -jxvf   ffmpeg-4.2.2.tar.bz2   #使用 -jxvf 解压bz2文件
    tar -zxvf yasm-1.3.0.tar.gz

    3.安装

    cd yasm-1.3.0
    ./configure
    make && make install
    cd ffmpeg-4.2.2   #进入目录
    ./configure --prefix=/opt/software/ffmpeg   #配置  设置安装路径
    make && make install   #安装

    4.将mp4文件转换为ts文件

    ffmpeg -y -i test.mp4  -vcodec copy -acodec copy -vbsf h264_mp4toannexb output.ts

    5.将ts文件切片

    ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 1000 output.ts

    #output.ts 这个看上条命令后面出输的文件名称。我这里是output.ts #出输的m3u8文件索引文件名称,可以随意修改,我这里是playlist.m3u8 #-segment_time 1000 每一段切片的控制时间,我这里是1000s,根据你的情况随意修改

    三、直播搭建

    1.配置nginx/conf文件

      vim /opt/software/nginx/conf/nginx.conf

      与http协议并列添加如下代码

    rtmp {
        server {
            listen 1935;  #监听的端口
            chunk_size 4096;   
            application hls {  #rtmp推流请求路径  
                live on;    
                hls on;    
                hls_path /opt/software/nginx/html/hls;   #填写推流路径 
                hls_fragment 5s;    
            }    
        }    
    }  

      保存退出

      在html下创建hls目录

      cd  /opt/software/nginx/html
    
      mkdir hls

    2.安装使用obs推流工具

      可在软件管理--腾讯管家下载OBS

      

      1.点击视频捕获设备

      

       点击确定可看到电脑摄像头捕获的画面

      2.点击显示器捕获

      如果有双显卡需要关闭独立显卡

      右键此电脑打开管理

      右键独立显卡-->禁用

      

       重新打开OBS-->点击显示器捕获  可看到显示器上的内容

      

    3.游戏捕获

       

       

     可选择特点程序捕获

    3.设置推流

    点击右下角的设置--推流   填写服务器和密钥  点击确定

      

     

     点击开始推流

    cd /html/hls 可看到推流的碎片文件

     4.拉流

    法一:

    下载拉流工具 Nginx_EV https://pan.baidu.com/s/1hCzZnF8vAPG3xFkF_fMOkg 提取码:3fz3

    修改E:Nginx_EVhtmld目录下index.html文件

    file:"rtmp://192.168.0.178/hls/密钥"

      

    打开网页输入地址 开始播放

       

    法二:

    下载播放器 http://sdk.bce.baidu.com/media-sdk/cyberplayer-3.5.3.zip

    在cyberplayer-3.5.3文件下创建index.html 代码如下

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="playercontainer"></div>
    </body>
    <script type="text/javascript" src="cyberplayer.js"></script>
    <script type="text/javascript">
        var player = cyberplayer("playercontainer").setup({
             640,
            height: 360,
            file: "rtmp://192.168.0.178/hls/1234", // 注意!!!<—rtmp直播地址,这里填写自己对应的服务器地址
            autostart: true,
            stretching: "uniform",
            volume: 100,
            controls: true,
            rtmp: {
                reconnecttime: 5, // rtmp直播的重连次数
                bufferlength: 1 // 缓冲多少秒之后开始播放 默认1秒
            },
            ak: "XXXXXXXXXXXXXXXXXXXX" // 注意!!百度云管理控制平台注册即可获得accessKey
        });
    </script>
    </html>

    accessKey获取路径  https://console.bce.baidu.com/iam/#/iam/accesslist

    把cyberplayer-3.5.3导入到HBuilder运行浏览器打开index.html可见直播效果 ,如果是谷歌浏览器需要设置flash插件允许使用

  • 相关阅读:
    [Swift]LeetCode632. 最小区间 | Smallest Range
    [Swift]有用的Binary Heap Type类
    [Swift]LeetCode633. 平方数之和 | Sum of Square Numbers
    [Swift]LeetCode630. 课程表 III | Course Schedule III
    [Swift]LeetCode629. K个逆序对数组 | K Inverse Pairs Array
    [Swift]LeetCode628. 三个数的最大乘积 | Maximum Product of Three Numbers
    [SQL]LeetCode627. 交换工资 | Swap Salary
    [SQL]LeetCode626. 换座位 | Exchange Seats
    [Swift]LeetCode623. 在二叉树中增加一行 | Add One Row to Tree
    [Swift]LeetCode622. 设计循环队列 | Design Circular Queue
  • 原文地址:https://www.cnblogs.com/asksk/p/12485950.html
Copyright © 2011-2022 走看看