流媒体服务器配置说明v2.0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流媒体服务器配置说明
1.前言
为什么要用red5建立流媒体服务器,因为Red5是一个采用Java开发开源的Flash流媒体服务器,免费。Red5使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、 Remoting等功能。
2.流媒体服务器的配置
1.JDK
Red5的安装需要java环境的支持,先配置好JDK。
2.RED5安装
本demo red5安装在工作环境中,X:\TAIZHOU\webroot\Red5\
流媒体服务器读取文件的目录为:X:\TAIZHOU\webroot\Red5\webapps\OLD
OLD文件下有两个文件夹:streams和WEB-INF
其中streams中存放所有的视频资料,WEB-INF则是一些重要的配置文件。
Webapps配置说明:
classes文件夹(用来存放编译后的java类文件)。
1.web.xml 中需配置:
指定应用程序唯一的名称为:OLD
如果该文件中没有请添加如下:
2.red5-web.xml 中需要添加控制器(Handlers)
这个类文件放在classes中。主要是实现客户端和流媒体服务器的连接。
3. red5-web.properties 中需配置
webapp.contextPath=/OLD
webapp.virtualHosts=*,localhost, 127.0.0.1
虚拟主机应添加*,即任何地址都可访问。否则其他电脑无法读取流媒体。
3.FLEX BUILDER3 或者Flex SDK的安装
这两者的区别是,FLEX BUILDER3 集成SDK和可视化编辑窗口,Flex SDK包含了有Flex Framework、Adobe AIR Framework、Flex Tools等重要的组件库与API。
对于开发人员来说,最好安装FLEX BUILDER3,而服务器建议安装Flex SDK。
为什么要安装这个工具呢?因为flex程序的编译要用到其中的SDK。下面会讲到。
Flex SDK 安装后需要配置环境变量,在path中添加:
C:\flex_sdk_3\bin;C:\flex_sdk_3\frameworks;
Linux下添加环境变量,这里就不说了。
Flex程序以MXML(主程序)和AS为主。
开发MXML程序说明:
因为red5 采用RTMP 协议传输数据流,所以在MXML中需要定义RTMP连接地址来找到red5的工作目录。
如下程序,本人开发的第一版视频播放器源代码,可以用FLEX BUILDER3新建一个项目,把代码考过去,然后运行就能看到生成SWF视频文件了,由于界面比较难看,所以本人抛弃了它。
import mx.controls.Alert;
import flash.media.SoundTransform;
private var rtmpURL:String="rtmp://192.168.0.21/OLD";
private var conn:NetConnection=new NetConnection();
private var isConnectSuccess:Boolean=false;
private var netStream:NetStream;
private var video:Video=new Video();
private var sound:SoundTransform;
private function clickConnect(e:MouseEvent):void{
if(!isConnectSuccess){
conn.addEventListener(_STATUS,netStatus);
conn.connect(rtmpURL);
}}
private function netStatus(e:NetStatusEvent):void{
trace(.code);
if(.code=="NetConnection.Connect.Success"){
isConnectSuccess=true;
netStream=new NetStream(conn);
sound = netStream.soundTransform;
video.attachNetStream(netStream);
netStream.play("on2_flash8_w_audio.flv");
ui.addChild(video);
remoteObject.insert();
}}
private function StopBtn_Click(e:MouseEvent):void
{
netStream.close();
isConnectSuccess = false;
}
private function PauseBtn_Click(e:MouseEvent):void
{
netStream.pause();
}