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