[文章作者:张宴 本文版本:v1.0 最后修改:2009.04.13 转载请注明原文链接:http://blog.zyan.cc/post/409/]

  上周五,我们基于开源Flash Server:Red5(http://osflash.org/red5)的Flash流媒体服务平台上线,内容涉及视频上传、视频分发、调用接口、Flash播放器等。

  一、Flash RTMP流媒体播放演示(播放时进度条可以自由拖动):

  

  生产环境更多 Flash RTMP 流媒体视频演示:http://jx3.xoyo.com/xgxz/video/



  二、安装步骤简要说明:
  ①、安装JDK
  打开http://java.sun.com/javase/downloads/,下载最新的Java SE Development Kit (JDK),安装在/usr/local/jdk/下。
chmod +x jdk-6u13-linux-i586.bin
./jdk-6u13-linux-i586.bin


  ②、安装Red5
  打开http://osflash.org/red5/070final,下载red5-0.7.0.tar.gz,解压缩后执行./red5.sh,然后访问http://yourdomain:5080/,有演示。



  三、服务器带宽消耗比较:
  ①、客户端 1.5M ADSL 环境,HTTP 方式播放单个视频,服务器所消耗的带宽:
[root@localhost ~]# ./net.sh eth0 1
IN: 3318 Byte/s OUT: 259984 Byte/s
IN: 3486 Byte/s OUT: 249470 Byte/s
IN: 3332 Byte/s OUT: 259984 Byte/s
IN: 3090 Byte/s OUT: 252528 Byte/s
IN: 3000 Byte/s OUT: 252474 Byte/s
IN: 3000 Byte/s OUT: 253976 Byte/s
IN: 2940 Byte/s OUT: 255478 Byte/s
IN: 3004 Byte/s OUT: 252474 Byte/s
IN: 3452 Byte/s OUT: 252528 Byte/s
IN: 3270 Byte/s OUT: 260038 Byte/s
IN: 3586 Byte/s OUT: 252474 Byte/s


  ②、客户端 1.5M ADSL 环境,RTMP 流媒体方式播放单个视频,服务器所消耗的带宽:
[root@localhost ~]# ./net.sh eth0 1
IN: 3900 Byte/s OUT: 27878 Byte/s
IN: 4200 Byte/s OUT: 30868 Byte/s
IN: 4380 Byte/s OUT: 27801 Byte/s
IN: 4080 Byte/s OUT: 29965 Byte/s
IN: 4080 Byte/s OUT: 26450 Byte/s
IN: 3960 Byte/s OUT: 27143 Byte/s
IN: 3000 Byte/s OUT: 10061 Byte/s
IN: 3960 Byte/s OUT: 16166 Byte/s
IN: 3660 Byte/s OUT: 26480 Byte/s
IN: 4020 Byte/s OUT: 23127 Byte/s


  HTTP 方式播放,如果服务器端不限速,客户端的带宽越大,服务器消耗的带宽也越大,但限速又会影响用户体验;
  RTMP 流媒体方式播放,只要客户端达到最低带宽要求,不管客户端的带宽如何,服务器消耗的带宽都一样。

  如果播放10M以内大小的视频,HTTP 能够在较短的时间内下载完视频,能够降低并发观看用户数;
  如果播放10M以上大小的视频,RTMP 要比 HTTP 方式节省不少带宽。

  RTMP 播放时进度条可以自由拖动,虽然Lighttpd和Nginx目前也可以使用somevideo.flv?start=xxx的方式从指定位置下载视频,但还是不如 RTMP 灵活。



  四、带宽测试Shell脚本(net.sh):
#!/bin/bash

# test network width

function usage

{

        echo "Usage: $0  "

        echo "    e.g. $0 eth0 2"

        exit 65

}


if [ $# -lt 2 ];then
usage
fi
typeset in in_old dif_in
typeset out out_old dif_out
typeset timer
typeset eth

eth=$1
timer=$2

in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $1 }' )
out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $9 }' )

while true
do
sleep ${timer}
in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $1 }' )
out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $9 }' )
dif_in=$(((in-in_old)/timer))
dif_out=$(((out-out_old)/timer))
echo "IN: ${dif_in} Byte/s OUT: ${dif_out} Byte/s"
in_old=${in}
out_old=${out}
done
exit 0


Tags: , ,



技术大类 » 其他Unix技术 | 评论(79) | 引用(3) | 阅读(133508)
tianqingbo
2009-4-14 02:12
呵呵!不错哟!晚上还没有睡啊!
mesky
2009-4-15 19:58
支持H264编码的视频吗?
wtf
2009-4-15 20:34
想拜你为师,不知愿不愿意收?

俺是三楼烈火的
fayboy
2009-4-16 16:15
感觉稍稍有些不足的地方就是,当带款环境很差的时候,向回拖动的时候还需要缓冲,影响收看效果
狗子
2009-4-17 08:51
shock
不错,收益了
renyuan
2009-4-18 15:28
改天我给你换一个FLASH播放器,你到时候教我RED5怎么样!哈哈!
gakaki
2009-4-18 19:40
可否开源一下 老实说red5的这么全的实例还不好找
杨言 Email Homepage
2009-4-21 10:33
哈哈 收获不少 我又有新的东西可以研究了
newbie
2009-4-22 12:58
./net.sh eth0 1提示 bash: ./net.sh: Permission denied
这是为什么呢?
cat /proc/net/dev 是有内容的。
直接使用:cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ' { print $1 }'  可以吗?
shark巨菜
2009-4-27 18:05
偶像就是厉害。
膜拜。
1
2009-4-28 10:54
in=`awk '/eth0/{split($1,tmp,":");for(i in tmp) if(tmp[i]!~/eth/) print tmp[i]}' /proc/net/dev`
out=`awk '/eth0/{split($9,tmp,":");for(i in tmp) if(tmp[i]!~/eth/) print tmp[i]}' /proc/net/dev`
流云
2009-4-30 11:18
问题如下:nc.connect("rtmp://localhost/oflaDemo");放器进度条用不了
          nc.connect(null);播放器进度条能用
好好
2009-4-30 16:29
楼主你好 我自己做的flv播放器连接Red5 播放器进度条不能自由拖动???
Gary
2009-5-9 11:30
老大,是否可以提供完整的配置步骤,怎么样才能达到像您演示的那样,谢谢,让更多的人去学习吧。我想学,但是找不到教程,盼老大出手。。。。。。。
Gary
2009-5-9 18:33
很实用,我天天来,天天盼,盼老大写个详细的安装配置过程!我好希望我的偶像会满足我的这个小小的要求,也为了大家掌握这块,网上这方面的内容真的太少了!
Gary
2009-5-10 15:38
希望都寄托在老大了,求知的渴望让我又来了,我等,我继续等。。。。。。
张宴 回复于 2009-5-10 17:44
1、安装JDK
mkdir -p /usr/local/jdk/
cd /usr/local/jdk/
http://java.sun.com/javase/downloads/,下载最新的Java SE Development Kit (JDK)到当前目录,命名为:jdk-6u13-linux-x64.bin(以64位版为例),然后:
chmod +x jdk-6u13-linux-x64.bin
./jdk-6u13-linux-x64.bin
按回车到最后,填写yes同意安装JDK

2、配置JDK环境信息
vi /etc/profile
输入以下信息:
export PATH=$PATH:/usr/local/jdk/jdk1.6.0_13/bin:/usr/local/jdk/jdk1.6.0_13/jre/bin
export JAVA_HOME=/usr/local/jdk/jdk1.6.0_13
export CLASSPATH="./:/usr/local/jdk/jdk1.6.0_13/lib:/usr/local/jdk/jdk1.6.0_13/jre/lib"
export LD_LIBRARY_PATH=/usr/local/jdk/jdk1.6.0_13/jre/lib/i386:/usr/local/jdk/jdk1.6.0_13/jre/lib/i386/server
执行以下命令使配置生效:
source /etc/profile

3、red5解压开,执行./red5.sh就可以启动了。访问http://你的服务器IP地址:5080/,有RTMP视频的演示
你可可以将脚本改改,推到后台运行。

4、开源的Flash播放器JW Player支持RTMP流媒体播放,本文的Flash播放器也是在JW Player源码上改的。
http://www.longtailvideo.com/players/jw-flv-player/
Gary
2009-5-12 11:57
十分感谢老大的回复,苛刻的再问下,第3步:有RTMP视频的演示
你可可以将脚本改改,推到后台运行。
这块是否可以再详细的说明下?
Gary
2009-5-12 12:00
只想达到老大演示的结果,老大再明细下。水平菜,没办法,能像您的Nginx 0.7.x + PHP 5.2.9(FastCGI)搭建胜过Apache十倍的Web服务器(第5版)[原创]这样的明细就好了。照着操作就一定能OK,掌握的还快。
LYEZIF
2009-5-19 16:45
真是人才
JACK
2009-5-22 14:13
你好:

  请教一下  请问你是用什么软件来修改FLS播放器界面的

谢谢
分页: 1/5 第一页 1 2 3 4 5 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]