流媒体

介绍:

  之前的公司在做船舶预警历史片段的时候用到了流媒体技术,我在这里简单的介绍下之前的设计思想。

  1.桥梁上面有摄像头,我们通过摄像头获取到船舶的轨迹画面,然后通过推流,形成压缩文件放到服务器上面去,这样就形成了一个本地历史片段。

  2.这样做是为了方便查找,但是有风险,当时用的压缩视频代价非常的高,船舶预警历史片段每天多达上千条。每一条都是由超清摄像头获取到的,这样每一帧帕率占用空间非常可怕,几乎每周都要做清除工作,这些是后话。

  3.我们将压缩的文件放入到指定的文件中去,并且每天都会形成新的文件(类似于日志记录文件),然后通过我们指定的编码去生成桥下面不同区域的文件,再将经过不同区域的船舶归类到不同区域文件下,通过时间和船舶编码生成历史片段文件。

  4.所有片段都在媒体服务器上面,我们每次通过指定校验,之后去匹配到不同区域下面的不同船舶的历史片段,延后通过web页面的形式回显到页面上

        5.还能实时查看当前区域的船舶动态

ffmpeg+nginx+rtmp+web实现视频直播网站

开发环境:

  服务器:系统:UBUNTU 16.04 工具:NGINX+RTMP
  推流端:系统:   UBUNTU 16.04 工具:ffmpeg
  拉流端:系统:WINDOWS 10   工具:web

 

一 、搭建媒体服务器

安装相关依赖:

//安装gcc g++依赖库
sudo apt-get install build-essential
sudo apt-get install libtool

//安装pcre依赖库 
sudo apt-get update

//安装zlib依赖库
sudo apt-get install zlib1g-dev

//安装SSL依赖库 
sudo apt-get install openssl libssl-dev

安装Nginx+Rtmp

//下载NGINX(到HOME目录)
wget http://nginx.org/download/nginx-1.13.10.tar.gz
//解压
tar -zxvf nginx-1.13.10.tar.gz
//下载RTMP(到HOME目录)
git clone https://github.com/arut/nginx-rtmp-module.git
//进入NGINX解压目录
cd nginx-1.13.10
//配置
./configure --prefix=/usr/local/nginx --add-module=~/nginx-rtmp-module --with-http_ssl_module
//编译
make
//安装
sudo make install
//打开nginx配置文件
cd /usr/local/nginx/conf/
sudo gedit nginx.conf
//下拉至文档末尾,添加RTMP服务
rtmp {  
  
    server {  
  
        listen 2018;  #服务端口,避开重要端口即可   
  
        application live {  
            live on;
        }  
        application hls_alic{
        live on;
        hls  on;
        hls_path /tmp/hls;
    }
}  
//不要关闭文档,回到http服务配置处,按以下样式对其修改,最后保存并退出
http {  
    include       mime.types;  
  
    default_type  application/octet-stream;  
  
    sendfile        on;  
  
    keepalive_timeout  65;  
  
    server {  
  
        listen       80;  
  
        server_name  localhost;  
        location /stat {        
                rtmp_stat all;  
                rtmp_stat_stylesheet stat.xsl;  
      }  
  
        location /stat.xsl {    
        root /usr/local/nginx/nginx-rtmp-module/;  
        }  
  
        location / {  
            root   html;  
            index  index.html index.htm;  
        }  
  
        error_page   404        /404.html 
        location = /50x.html {  
            root   html;  
        }  
    }  
}  
//开启nginx服务
cd /usr/local/nginx/sbin
sudo ./nginx
//如要查看NGINX服务是否开启,请打开浏览器并输入localhost,如果看到nginx页面即为成功,或使用以下代码
ps -ef|grep nginx

 二、推流到媒体服务

端流配置:

  安装 ffmpeg:

// 安装ffmpeg(如果你是16.04以上版本,直接安装就行sudo apt-get install ffmpeg)
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next  
sudoapt-get update
sudo apt-get install ffmpeg

//启用ffmpeg进行推流(如果推流成功,代表RTMP服务配置成功)
ffmpeg  -f video4linux2-framerate 25 -video_size 640*480 -i /dev/video0 -f flv rtmp://192.168.1.107:2018/live

//参数备注:

    -f:视频格式,video4linux2代表摄像头

    -video_size:输入流的分辨率,随意填。

    -i:输入流视频格式

    -f:输出流视频格式

    没有参数的内容就是输出流地址

 

三、拉流

免费的测试工具vlc: www.videolan.org/
重点是兼容全平台

 

 

 

 输入url与端口号

 

实例WEB代码:

<html>
<head>
    <title>Live</title>
    <meta charset="utf-8">
    <link href="http://vjs.zencdn.net/5.5.3/video-js.css" rel="stylesheet">
    <!-- If you'd like to support IE8 -->
    <script src="http://vjs.zencdn.net/ie8/1.1.1/videojs-ie8.min.js"></script>
    <script src="http://vjs.zencdn.net/5.5.3/video.js"></script>
</head>
<body>
<video id="my-video" class="video-js" controls preload="auto" width="640" height="300"
       poster="http://ppt.downhot.com/d/file/p/2014/08/12/9d92575b4962a981bd9af247ef142449.jpg" data-setup="{}">
    <source src="rtmp://127.0.0.1:2018/live/" type="rtmp/flv">
    </p>
</video>

</body>
</html>

 

posted @ 2021-05-27 11:13  RM-RF?  阅读(111)  评论(0)    收藏  举报