Linux下视频播放方案
本方案设计目的是初步实现企业网内的视频播放。方案分为文件上传,视频转码,视频播放三个方面。
文件上传方面,考虑到目前浏览器上传大文件的性能问题,建议采用FTP上传方式。上传后,由客户端发起刷新请求,服务端更新数据库。
流程图如下
流程如下
流程如下
- 客户端利用FTP工具将视频文件上传到服务端的上传目录中
- 客户端利用IE浏览器发出指令,WAS将文件信息写入数据库中
- 服务端将视频文件从上传目录转移到播放目录中
- 客户端可以通过一览列表播放视频
视频转码方面,采用mencoder进行转码。
- 通过mencoder读取媒体信息
- 通过java调用mencoder进行编码转换
- mencoder 01.wkv -o outfile.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050
- 通过renice降低用mencoder进程优先级,防止cpu占用率过高。
视频播放方面,采用WAS+Apache+wod_bw方式提供服务端支持,客户端采用JwPlayer解码播放
实现方案如下:
- 软件要求
流媒体服务器 | Apache | 2.2.17 |
客户端流量控制模块 | mod_bw | 0.7 |
前端播放模块 | JW Player | 5.3 |
- 系统结构图
- 流程说明
- IE浏览器强求WAS服务
- IE打开Play.jsp页面
- Play.jsp页面内部嵌入JwPlayer播放组件
- JwPlayer播放组件请求Apache
- Apache提供flv文件下载
- Apache可以控制请求Ip上限
- Apache可以限制每个Ip请求的流量
- JwPlayer缓冲flv文件流,即时播放。
- 测试情况
测试环境-硬件
CPU型号 | M900 |
CPU速度 | 2.2GHz |
二级缓存 | 1MB |
硬盘容量 | 320GB |
转速 | 5400转/分钟 |
接口类型 | SATA 串行 |
软件
Linux 内核 | 2.6.33.2 |
Apache | 2.2.17 |
mod_bw | 0.7 |
JDK | 6.0 |
Tomcat | 5.5.27 |
IE | 6.0/7.0 |
JW Player | 4.5 |
测试文件信息
测试文件 | dmkj.FLV |
文件大小 | 405M |
播放时间 | 76分钟 |
Apache服务器配置信息
IP下载速度限制 | 200k/s |
每客户端连接上限 | 2个 |
服务区IP连接上限 | 40个 |
压力测试效果
客户端数目 | 20个 ~ 25个 |
客户端缓冲时间 | < 3秒 |
客户端下载速度 | < 200k/s |
服务器CPU | 16% ~ 30% |
服务器内存 | 255m ~ 300m |
服务器带宽占用 | 0m/s ~ 4m/s |