• 【设为首页】
  • 【收藏闪客居】
当前位置:主页 > FLASH AS 编程 > RED5 > 文章内容
  • Red5 服务器初探 (互动媒体)

  • 来源:37studio.net 作者:三七 2008-08-15 【 】 TAG:

做过FlashPlayer的多媒体项目的朋友都知道,FlashPlayer的媒体服务器只有FMS 或是开源的Red5服务器. Red5相对于FMS来说并没有什么太多的优势. 但是由于其开源的原因,并且是采用Java开发,所以它的扩展性是非常强的, 另外,FlashPlayer一直没有公开访问在线音视频流的的API, 而FMS也没有提供这样一个功能,这大大限制了FlashPlayer的在线音视频应用. 在未来FlashPlayer10扩展了Sound对象,可以访问到Sound当前播放的音频流的二进制数据,也可以通过缓冲区将二进制音频数据推送到 Sound对象缓冲区,实现播放, 这使用在线音频编辑实现的困难大大降低. 但是很遗憾,FlashPlayer并没有提供Mic的音频数据流的访问. 为了解决这个问题, 我开始尝试研究Red5. Red5本身已比较成熟了,它提供了基础的FMS所有的功能,包括音视频数据的在线播放,共享对象处理,RTMPT通道,RTMPS通道外,还提供了服务 器本身的管理功能~ Red5项目的本身非常灵活,架构十分精良,所以刚接触它的时候会感觉项目十分宠大,加入Spring,Jetty,Tomcat对新手来说,理解起来十 分困难.之前因为我写过基于Mina2的AMF3的Socket服务器,因此非常想独立一个只实现音视频的服务器出来,基于这种想法,我做了一些简单的尝 度,没想到真的成功了~ 独立出来的服务器, 并不具备Red5的灵活性,只是在它的基础上精简了一下. 只是作为一个简单的音视频服务器,并做了在线语音的测试. 下面是项目的结构:

 下面是客户端的测试代码:

 

JavaScript代码
    1. package {  
    2.     import flash.display.Sprite;  
    3.     import flash.events.NetStatusEvent;  
    4.     import flash.media.Microphone;  
    5.     import flash.net.NetConnection;  
    6.     import flash.net.NetStream;  
    7.     import flash.net.ObjectEncoding;  
    8.   
    9.   
    10.     public class Red5 extends Sprite  
    11.     {     
    12.         private var net:NetConnection;  
    13.         private var stream:NetStream;  
    14.         public function Red5()  
    15.         {  
    16.             net=new NetConnection();  
    17.             net.client=this;  
    18.             net.objectEncoding=ObjectEncoding.AMF3;  
    19.             net.addEventListener(NetStatusEvent.NET_STATUS,onStatus);  
    20.             net.connect("rtmp://localhost/helloWorld");  
    21.         }  
    22.         public function close():void{  
    23.               
    24.         }  
    25.         public function set onBWDone(value:*):void{  
    26.             trace("??");  
    27.         }  
    28.           
    29.         public function get onBWDone():Function{  
    30.             return test;  
    31.         }  
    32.           
    33.         public function test(...arg):void{  
    34.             trace("?");  
    35.         }  
    36.           
    37.         private function onStatus(evt:NetStatusEvent):void{  
    38.             trace(evt.info.code);  
    39.               
    40.             if(evt.info.code=="NetConnection.Connect.Success"){  
    41.                 stream=new NetStream(net);  
    42.                 stream.addEventListener(NetStatusEvent.NET_STATUS,onStreaStatu);  
    43.                 var mic:Microphone=Microphone.getMicrophone(0);  
    44.                 mic.rate=11;  
    45.                 mic.setLoopBack(false);  
    46.                 stream.attachAudio(mic);  
    47.                 stream.publish("hello","live");  
    48.             }  
    49.               
    50.         }  
    51.           
    52.         private function onStreaStatu(evt:NetStatusEvent):void{  
    53.             trace(evt);  
    54.         }  
    55.     }  


服务器端日志:

 

 

 

图片附件(缩略图):
大小: 339.28 K
    尺寸:  x
    浏览: 32 次
    点击打开新窗口浏览全图

图片附件(缩略图):
大小: 389.71 K
    尺寸:  x
    浏览: 30 次
    点击打开新窗口浏览全图




上一篇:red5 使用笔记二   下一篇:没有了
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
推荐内容

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)