白桦的天空

第一次的心动,永远的心痛!
  首页  :: 新随笔  :: 联系 :: 管理

基于red5的在线视频录制实例和详细注释

Posted on 2009-03-04 17:55  白桦的天空  阅读(2606)  评论(2编辑  收藏  举报
FLASH代码
 
//预定义声明
import mx.utils.Delegate;
//创建一个基本的网络连接对象
var nc:NetConnection = new NetConnection();
//连接到本地的Red5服务器
nc.connect("rtmp://localhost/online");
//将已和red5服务器建立连接的nc传递给NetStream
var ns:NetStream = new NetStream(nc);
//从摄像头和麦克风取得信息
var cam:Camera = Camera.get();
var mic:Microphone = Microphone.get();
//初始化摄像头和麦克风,调用函数
setupCameraMic();
//保存上次录制的内容,并进行清空
var lastVideoName:String = "";
//监听开始录制和停止录制两个按键的点击动作并进行相应的处理
playButton.addEventListener("click", Delegate.create(this, playClick));
stopButton.addEventListener("click", Delegate.create(this, stopClick));
//定义开始录制的playclick函数
function playClick():Void
{
//此flv文件是保存在 webapps/oflaDemo/streams/文件夹
//将摄像头和麦克风赋给ns
ns.attachVideo(cam);
ns.attachAudio(mic);
//将摄像头信息赋给视频显示窗口,这样我们可以即时看到信息
videoContainer.attachVideo(cam);
// 此处是定义存储名字的,用随机数目获得一个唯一的文件名
lastVideoName = "red5RecordDemo_" + random(getTimer());
ns.publish(lastVideoName, "record");
//锁定开始按键使其失效
playButton.enabled = false;
//锁定停止按键使其生效
stopButton.enabled = true;
}
function stopClick():Void
{
//关闭ns与red5的连接
ns.close();
//并清空视频显示窗口
videoContainer.attachVideo(null);
videoContainer.clear();
//锁定开始按键使其生效
playButton.enabled = true;
//锁定停止按键使其失效
stopButton.enabled = false;
//播放已经录制的视频
playLastVideo();
}

function playLastVideo():Void
{
// 传递录制的视频信息给视屏显示窗口
videoContainer.attachVideo(ns);
//回访已经上次录制的视频片段
ns.play(lastVideoName);
}
function setupCameraMic():Void
{
//启动摄像头
cam = Camera.get();
//设置尺寸
cam.setMode(320, 240, 30);
//设置录制质量
cam.setQuality(0,70);
//启动麦克风
mic = Microphone.get();
mic.setRate(44);
}
 
RED5安装与下载

1).Windows平台

先安装JDK,如果未安装过JDK,建议安装最新的JDK1.6(JDK6.0)

http://java.sun.com/javase/downloads/index.jsp页面,选择

点击Download后,会到下载页面,如果未登录过sun.com的,会跳转到登录页面

如果没有账号,可以注册一个帐号,登陆后,再到下载页面。

点击Accept前面的单选框

 

点击第一个安装包进行下载,下载完成后,双击进行安装

 

用默认设置进行安装即可。安装完成后,到命令行检测是否安装成功

 

 

下载Red5安装包http://dl.fancycode.com/red5/setup-red5-0.6rc2.exe,用默认安装即可,让Red5以服务方式运行。将online.zip解压到Red5安装目录下的webapps文件夹里,默认为C:\Program Files\Red5\webapps

将该online目录以及该目录下面的子目录属性设置为所有人可读写。

online.zip下载地址:http://www.supesite.com/tools/online.zip

重启Red5服务 

 

2).Linux/Unix平台

先安装JDK,如果未安装过JDK,建议安装最新的JDK1.6(JDK6.0)

http://java.sun.com/javase/downloads/index.jsp页面,选择

 

点击Download后,会到下载页面,如果未登录过sun.com的,会跳转到登录页面

 

如果没有账号,可以注册一个帐号,登陆后,再到下载页面。

 

点击Accept前面的单选框

 

根据自己服务器的操作系统,选择相应的安装包。如:Linux RPM包。

对于使用FreeBSD操作系统的站长,

请到http://www.freebsdfoundation.org/downloads/java.shtml下载最新的JDK1.5安装包。

如果安装的是JDK1.5的服务器,请再下载apache-ant

 

http://mirror.cc.columbia.edu/pub/software/apache/ant/binaries/apache-ant-1.7.0-bin.tar.gz

apache-ant-1.7.0-bin.tar.gz放到/tmp目录下

mv apache-ant-1.7.0-bin.tar.gz /tmp

cd /usr/local

tar -zxf /tmp/apache-ant-1.7.0-bin.tar.gz

mv apache-ant-1.7.0 ant

 

 

 

 

 

 


设置变量环境

export PATH=$PATH:/usr/local/ant/bin

 

 


如果是FreeBSD操作系统,建议利用ports安装ant

下载Red5程序包http://dl.fancycode.com/red5/red5-0.6rc2.tar.gz

red5-0.6rc2.tar.gz放到/tmp目录下

mv red5-0.6rc2.tar.gz /tmp

cd /usr/local

tar -zxf /tmp/red5-0.6rc2.tar.gz

mv red5-0.6rc2 red5

 

 

 

 

 


如果安装的JDK版本为1.5,请重新编译red5

cd /usr/local/red5

vi build.properties

 

 

 

 


找到java.target_version=1.6修改为java.target_version=1.5,然后进行重新编译

cd /usr/local/red5

ant

 

 

 

 


online.zip解压到/usr/local/red5/webapps

将该online目录以及该目录下面的子目录属性设置为777

online.zip下载地址:http://www.supesite.com/tools/online.zip

cd /usr/local/red5/webapps

tar -zxf /tmp/online.tar.gz

 

 

 


开启Red5服务

/usr/local/red5/red5.sh &