本博客仅仅只是 记录 我搭建 flex+red5的简单过程。。。仅此以提供需求的过客以参考
1. 经过查阅大量资料, 从一个从未接触过流媒体直播的菜鸟,经过3天的研究实践,初步行程了一个 以视频转换发送流到red5服务器,然后进行广播到各个flex开发的 swf客户端。
准备工作: 1.到官网下载red5-server-1.0.5-RELEASE-server 的 服务器版本,此版本是经过编译的,我直接下载了。。没时间去研究其代码
2.搭建的流程 是参照http://www.cnblogs.com/jacktang/p/4741777.html 这个作者的流程:
以下是详细的过程内容 我进行引用:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Windows环境搭建Red5流媒体服务器指南
测试环境:Windows 7
一、 下载安装程序
- red5-server 下载地址
https://github.com/Red5/red5-server/releases
- JDK 下载地址
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- red5示例(如oflaDemo)下载地址,要FQ
http://red5.googlecode.com/svn/java/example/trunk/
- flowplayer下载地址
https://codeload.github.com/flowplayer/flash/zip/release_3_2_18
http://releases.flowplayer.org/flowplayer.rtmp/flowplayer.rtmp-3.2.13.swf
二、 安装JDK
三、 设置Java环境变量
1) 在桌面用鼠标右键点击“计算机”,在弹出的菜单中选择“属性”选项,弹出“系统属性”窗口;
2) 在“系统属性”窗口,点击“高级”切换到高级系统设置Tab,然后点击
“环境变量”按钮,弹出“环境变量”窗口;
3) 在“环境变量”窗口,点击用户变量或者系统变更区域的“新建”按钮,弹出新建变量窗口,然后输入“变量名”:JAVA_HOME, “变量值”:C:\Program Files\Java\jdk1.8.0_51。
注:“变量值”这一栏主要填写的是你安装JDK的路径,这里根据个人的情况可能会有所不同。
4) 上步结束之后,双击系统变量中的“Path”,在弹出的编辑系统变量窗口,
在“变量值”一栏的最前面添加如下的路径:
%Java_Home%\bin;%Java_Home%\jre\bin;
也可以用完全路径,如:C:\Program Files\Java\jdk1.8.0_51\\bin;
四、 安装red5
把下载的red5安装包解压(本指南下载的是Zip安装包),复制到要安装的目录,如F:\red5\Test\red5-server-1.0.5
五、 设置red5环境变量
根据设置Java环境变量的方法,添加red5_home和ClassPath
变量名:red5_home
变量值:F:\red5\Test\red5-server-1.0.5 (此处要根据你的安装目录调整)
变量名:ClassPath
变量值:. (不配置此变量,或者此变更的值不是“.”,red5启动的过程会抛异常)
六、 启动red5
双击“red5.bat”文件,启动red5。
七、 测试red5是否部署成功
在浏览器中输入http://localhost:5080/,可成功打开,表示red5部署成功。
八、测试应用
将下载的oflaDemo.war文件解压后,放到red5部署目录中的webapps目录,如F:\red5\Test\red5-server-1.0.5\webapps。本指南测试时将目录名改成了oflaDemo2。
oflaDemo.war下载地址: http://pan.baidu.com/s/1hqAPl6O
重新启动red5服务器。
然后在浏览器中访问http://localhost:5080/oflaDemo2/,成功打开后,播放页面中的视频,如果顺利播放,表示应用部署成功。
注:如果在其它机器访问,将localhost改成服务器的IP即可。
九、 在其它机器用FlowPlayer测试red5服务器上的视频播放
将测试示例拷到要测试的机器,修改示例中的red5服务器地址和视频文件名称,在浏览器上打开测试示例中的flowplayer.html文件,看视频是否正常播放。
测试示例下载地址:http://pan.baidu.com/s/1dD8n8jf
参考文章:
win7下配置java 环境变量
http://www.cnblogs.com/zhj5chengfeng/archive/2013/01/01/2841253.html
搭建Windows Red5流媒体服务器详解
http://blog.csdn.net/keepingstudying/article/details/41980961
2. 第一步 red5 服务器搭建成功后 进行第二步 创建flex客户端
具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()">
<fx:Script>
<![CDATA[
import flash.net.navigateToURL;
import mx.controls.Alert;
import mx.core.FlexGlobals;
import mx.utils.URLUtil;
private var nc:NetConnection;
private var ns:NetStream;
private function init():void{
/* playButton.enabled = false;
stopButton.enabled = true */
//之前有连接,先关闭
try{
if(nc.connected){
nc.close();
}
}catch(e:Error){}
nc = new NetConnection();
nc.client = this;
nc.objectEncoding=ObjectEncoding.AMF0;
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, netSecurityError);
nc.addEventListener(NetStatusEvent.NET_STATUS,connectHandler);
nc.connect("rtmp://10.188.180.163/live");
}
private function connectHandler(evt:NetStatusEvent):void{
if (evt.info.code == 'NetConnection.Connect.Success') {
ns = new NetStream(nc);
var clientobj:Object=new Object();
clientobj.onMetaData=function():void{};
ns.client=clientobj;
var video:Video=new Video() ;
video.width = videoDisplay.width;
video.height = videoDisplay.height;
video.attachNetStream(ns);
//这里的名称要和服务端发送的live后面的名称一致
ns.play("hello");
videoDisplay.addChild(video);
}
else
{
// nc.close();
// ns.close();
/* if(!nc.connected){
nc.connect("rtmp://10.188.180.163/live");
} */
//init();
//Alert.show(evt.info.code );
if (evt.info.code == 'NetConnection.Connect.Closed') {
Alert.show("直播节目中断 请刷新","提示");
refreshWebPage();
}
}
}
/**
* 刷新网页。
*/
public function refreshWebPage():void
{
var url:String = FlexGlobals.topLevelApplication.url;
if (URLUtil.isHttpURL(url))
{
url = "http://" + URLUtil.getServerNameWithPort(url);
}
else if (URLUtil.isHttpsURL(url))
{
url = "https://" + URLUtil.getServerNameWithPort(url);
}
flash.net.navigateToURL(new URLRequest(url), "_self");
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<s:VGroup width="100%" height="100%" horizontalAlign="center">
<s:BorderContainer backgroundColor="#ffffff" width="696" height="493" horizontalCenter="0" borderWeight="2">
<s:VideoDisplay width="100%" height="100%" id="videoDisplay"/>
</s:BorderContainer>
<s:Label text=" 视频直播" fontSize="20" color="#ff0000" fontWeight="bold" fontFamily="宋体"/>
</s:VGroup>
</s:Application>
-----------------------------------先记录到这 后续补充-------------