时间:2024-05-04
龚群辉
(江苏航运职业技术学院 江苏省南通市 226010)
流媒体服务器是流媒体应用的核心系统,是流媒体应用系统的基础,也是最主要的组成部分。流媒体服务器的主要功能是以流式协议(RTMP、RTP/RTSP、MMS 等)将视频文件传输到客户端,供用户在线观看,也可从视频采集、压缩设备接收实时视频流,再以流式协议直播给客户端。本文简述一种开源流媒体服务器的搭建,以及相应Web 端及客户端的播放方法。
本文直播系统示意图如图1,分为采集端、流媒体服务器、播放端以及发布服务器。
图1
采集端:主要是从摄像头中采集视频,如移动端摄像头、PC端摄像头以及一些摄像设备;
流媒体服务器:接收从采集端推上来的视频流,然后将该视频流再推送到播放端;
播放端:播放端就是各种app,网页中的播放器,拉取流媒体服务器上的视频流,然后进行转码,最终播放出来;
发布服务器:提供视频内容的发布,以及其他服务,如弹幕,讨论版等;
推流:指将视频信号推送到流媒体服务器,以便客户通过网络观看视频直播,本文采用rtmp 协议进行推流。
拉流:从流媒体服务器上拉取视频流的过程,本文分别介绍了rtmp 协议及http-flv 协议观看视频流的方法。
本文用到的软件如下:
Node-Media-Server 是一个Node.js实现的RTMP、HTTP、WebSocket、HLS、DASH 流媒体服务器。Node-Media-Server 适用于多个平台,部署简单方便。
它的特性如下:
跨平台支持 Windows/Linux/Unix
支持的音视频编码 H.264/H.265/AAC/SPEEX/NELLYMOSER
支持缓存最近一个关键帧间隔数据,实现RTMP 协议秒开
支持RTMP 直播流转LIVE-HTTP-FLV 流,支持 flv.js 播放
支持RTMP 直播流转LIVE-WebSocket-FLV,支持 flv.js 播放
支持事件回调
支持https/wss 加密传输
支持服务器和流媒体信息统计
支持RTMP 直播流转HLS,DASH 直播流
支持RTMP 直播流录制为MP4 文件并开启faststart
支持RTMP/RTSP 中继
支持API 控制中继
假设流媒体服务器 ip 地址 为 192.168.1.100,操作系统为 win7 x64。
Node-Media-Server 需要node.js 支持,我们首先获取node.js 并安装。
因node.js 高版本不支持win7,这里采用的是12.18.0 版本,下载zip 版,直接解压到 e: ode,再将e: ode 加入到 环境变量PATH中即可。
为加快安装速度,更换使用国内淘宝源,命令如下:
node-media-server 的配置文件为app.js,编辑app.js 进行配置,具体内容如下:
配置中rtmp 协议端口为 1935,http 协议端口为8000。
E: ode ode_modules ode-media-server>e: ode ode.exe app.js
2021-3-16 17:00:00 4704 [INFO]Node Media Server v2.1.9
2021-3-16 17:00:00 4704 [INFO]Node Media Rtmp Server started on port: 1935
2021-3-16 17:00:00 4704 [INFO]Node Media Http Server started on port: 8000
2021-3-16 17:00:00 4704 [INFO]Node Media WebSocket Server started on port: 8000
出现以上提示,说明node-media-server 已经运行成功。
本文以演示为目的,故采用ffmpeg 来进行推流,ffmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。在实际场景,建议使用OBS Studio 软件进行推流,OBS Studio 是一款用于实时流媒体和屏幕录制的软件,为高效捕获,合成,编码,记录和流传输视频内容而设计,支持主流流媒体平台,具有图形化界面,简单易用。
事先准备好一段视频demo.mp4,视频格式为x264,音频格式为aac。
推流地址: rtmp://192.168.1.100:1935/live/stream
运行推流命令:ffmpeg.exe -re -stream_loop -1 -i demo.mp4 -c copy -f flv rtmp://192.168.1.100:1935/live/stream
VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。
播放方法:打开VLC,点击 菜单中媒体 - 打开网络串流,输入rtmp 播放地址或http-flv 播放地址即可播放视频流。
播放地址如下:
网页方式播放需要发布服务器支持,本文采用nginx 充当发布服务器,采用flv.js 来播放http-flv 视频。
下面是采用 flv.js 的flvplay.htm 源代码:
将flvplay.htm 及flv.min.js 放置于nginx 目录下html 目录中,运行nginx,假设nginx 运行于ip 192.168.1.101 上,用浏览器打开http://192.168.1.101/flvplay.htm 即可观看视频直播。
通过以上步骤,可以快速搭建出一套流媒体服务器,根据需求,流媒体服务器及发布服务器可以部署在一台服务器上,也可以部署在两台服务器,快捷方便地投入应用,除服务器资源,无需其他投入,非常适合校园或中小企业使用。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!