目标用于搭建内网流媒体服务器支持视频的点播。
背景用于支持培训网站中视频点拨功能,在培训网站总体方案中需要加入流媒体服务器,用于存储和传输视频资源。
相关概念流媒体
流媒体(Streaming Media)是一种新兴的网络传输技术,在互联网上实时顺序地传输和播放视/音频等多媒体内容的连续时基数据流。
流媒体技术包括流媒体数据采集、视/音频编解码、存储、传输、播放等领域。
流媒体系统组成
包括编码工具、流媒体数据、服务器、网络和播放器。
流媒体传输过程
如下图所示:
传输协议
RSVP: 资源预留协议
RTP: 实时传输协议
RTCP: 实时传输控制协议
MMS: 微软流媒体服务协议
RTSP: 实时流协议
RTMP: 实时消息传输协议
MIME: 多目因特网电子邮件扩展协议
Real Network的Real System
服务端软件:Helix Server 平台:Windows or Linux 文件格式:RealAudio, Realvideo, RealFlash
微软的Windows Media Services
服务端软件:Windows Media Server 平台:Windows 文件格式:ASF, WMV
苹果公司的Quick Time系列
服务端软件:QuickTime Streaming Server (开源版本为Darwin Streaming Server) 平台:MacOS X, Linux, Windows 文件格式:MOV, MP4在这三家公司的流媒体产品中,RealNetworks公司的免费服务端Helix Server Basic最大提供个流的并发,仅支持其专有编码RealAudio和RealVideo,基本上只能算是体验性的产品;微软公司的流媒体服务端Windows Media Server附带于其服务器产品Windows Server中,但只有最高版本的Windows Server Enterprice才具有完整的包括组播在内的所有流媒体服务器功能;苹果公司的Darwin Streaming Server(简称DSS)完全免费,没有任何功能限制,且符合国际标准。
开源/免费解决方案
ffmpeg
全平台视频转换 开源
RED5
Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash流媒体播放,在线聊天,视频会议等一些基本功能。 开源地址:[](https://github.com/Red5/red5-server)
Darwin Streaming Server
为苹果公司视频流解决方案的开源版本。
easyDarwin
国内基于Darwin Streaming Server二次开发的流媒体服务器,有中文支持网站。 安装配置 RED5 使用HTTP协议播放首先从github下载已编译版本,因为在Linux上安装使用,直接下载 red5-server-1.0.7-RELEASE.tar.gz文件即可。
Java程序,在服务器上安装jre1.7版本后即可解压运行。测试阶段可以使用./red5-debug.sh启动red5服务器。在浏览器上输入[serverip]:5080/可以看到red5控制主页。
在red5安装目录下的webapp/vod目录下的视频文件可以在本地VLC播放器上连接[serverip]:5080/[filename]进行播放。
Darwin Streaming Server功能同easyDarwin,在Linux上安装比较繁琐,所以暂时只试用easyDarwin。
easyDarwin 使用RTSP协议播放首先从github下载源码或者已编译版本,因为上面有CentOS的已编译版本,直接下载解压即可使用。
使用root账户启动执行程序,首次启动迁移开启调试模式,./easydarwin -c ./easydarwin.xml -d。
启动后,可以在执行的从终端看到调试信息。同时使用[serverip]:8088可以登录,默认使用admin/admin登录。
在Movies目录下放置一些视频文件,就可以在客户端使用播放器进行播放,我测试使用的是VLC。
Nginx + HLSHLSHTTP Live Streaming苹果公司开放的支持html5直接播放的视频流技术。
Nginx实现http服务器功能,可以通过http访问m3u8文件实现播放。
要使用HLS播放的第一步,是将视频文件切割成多个ts视频流,然后使用m3u8索引文件进行播放。生成m3u8和ts文件可以借助ffmpeg工具,使用如下命令就可以将一般的视频文件转换成HLS支持的文件。
ffmpeg -i "G:\video\7 magic leap2.avi" -f hls "G:\video\HLR\test.m3u8"