流媒体服务器部署及直播和点播

一、流媒体服务器部署

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插件允许使用

原文地址:https://www.cnblogs.com/asksk/p/12485950.html