Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流;
录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录
制,flash流媒体播放,在线聊天,视频会议等一些基本功能。
Red5 is an Open Source Flash Server written in Java that supports:
- Streaming Audio/Video (FLV
and MP3
)
- Recording Client Streams (FLV
only)
- Shared Objects
- Live Stream Publishing
- Remoting (AMF
)
到http://www.red5.org/red5-server/下载最新的red5版本(我下的是linux版),只需要解压缩unzip -o red5-1.0.0-RC1.zip,然后执行./red5.sh即可将red5的服务启动起来。
访问http://localhost:5080,然后安装相应的服务,之后就可以查看demo了。
新建一web项目TestRed5,然后将WebRoot部分拷贝直red5的webapps目录下,补充好相应red5-web.properties和red5-web.xml还有web.xml文件,可以直接拷贝oflaDemo中的三个文件。然后重启red5服务,就可以访问TestRed5提供的red5服务了。
使用red5+flash提供视频录像和播放录像的主要功能是由red5提供录和播放的功能,使用flex制作一个flash
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private var nc:NetConnection = null;
private var ns:NetStream = null;
private var video:Video = null;
private var camera:Camera = null;//定义一个摄像头
private var mic:Microphone; //定义一个麦克风
private var rtmp_url:String = "";// "rtmp://192.168.61.113/TestRed5";
private var videoName:String = ""; //视频保存名字
private function init():void{
//nc = new NetConnection();
setupCameraAndMic();
}
private function setupCameraAndMic():void{
camera = Camera.getCamera();
if(camera != null){
camera.addEventListener(StatusEvent.STATUS,cameraStatus);
camera.setMode(320,240,30);
camera.setQuality(0,70);
video = new Video();
video.width = 320;
video.height = 240;
video.attachCamera(camera);
videoPlay.addChild(video);
}
mic = Microphone.getMicrophone();
if(mic != null){
mic.addEventListener(StatusEvent.STATUS,micStatus);
mic.setSilenceLevel(0,-1); //设置麦克风保持活动状态并持续接收集音频数据
mic.gain = 80; //设置麦克风声音大小
}
}
private function cameraStatus(event:StatusEvent):void{
if(!camera.muted){
startRecord.enabled = true;
//error_label.text = error_label.text + "1";
}else{
error_label.text = error_label.text + " 无法找到摄像头"
}
//camera.removeEventListener(StatusEvent.STATUS,cameraStatus);
}
/* 好像麦克风没法检测,测试过拔掉麦克风,但是没效果 */
private function micStatus(event:StatusEvent):void{
if(!mic.muted){
startRecord.enabled = true;
//error_label.text = error_label.text + "2";
}else{
error_label.text = error_label.text + " 无法找到麦克风";
}
//mic.removeEventListener(StatusEvent.STATUS,micStatus);
}
/*点击 开始录像 按钮*/
private function clickStartRecord():void{
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,nsHandler);
var name : String = root.loaderInfo.parameters.name; --从外界出入的参数
//rtmp_url = "rtmp://192.168.61.113/TestRed5";
rtmp_url = "rtmp://" + name + "/TestRed5";
error_label.text=rtmp_url + name;
//error_label.text=rtmp_url + name;
nc.connect(rtmp_url); //连接red5
//doStart();
}
private function nsHandler(evt:NetStatusEvent):void{
if(evt.info.code == "NetConnection.Connect.Success"){ //如果连接成功
doStart();
}else{
Alert.show("连接失败");
}
}
/*开始录像*/
private function doStart():void{
if(video != null){
video.clear();
videoPlay.removeChild(video);
video = new Video();
video.width = 320;
video.height = 240;
video.attachCamera(camera);
videoPlay.addChild(video);
}
ns = new NetStream(nc);
ns.attachCamera(camera);
ns.attachAudio(mic);
videoName = "vincent_"+Math.random()+getTimer();
ns.publish(videoName,"record");
startRecord.enabled = false;
stopRecord.enabled = true;
}
private function clickStopRecord():void{
ns.close();
video.clear();
videoPlay.removeChild(video);
startRecord.enabled = true;
stopRecord.enabled = false;
init();/*重新初始化Camera,否则Camera会默认使用完了,不再显示图像*/
}
]]>
</mx:Script>
<mx:Panel x="213" y="175" width="360.5" height="301" layout="absolute">
<mx:VideoDisplay x="10" y="10" width="320" height="240" id="videoPlay"/>
</mx:Panel>
<mx:Button x="270" y="498" label="开始录像" id="startRecord"
click="clickStartRecord()"/>
<mx:Button x="432" y="498" label="停止录像" id="stopRecord"
click="clickStopRecord()" enabled="false"/>
<!--
<mx:Button x="442" y="498" label="播放录像" id="playRecord" enabled="false"/>
-->
<mx:Label text="错误:" x="213" y="544" width="360.5" height="25"
id="error_label" fontSize="12"/>
</mx:Application>
将此mxml导出成videoRecorder2.swf文件,供web程序使用,此程序提供一个录像功能。
将videoRecorder2.swf嵌入web页面使用,将videoRecord2.swf导入项目中。
页面代码如下
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<html>
<head>
<title>视频录像</title>
</head>
<body>
<center>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0"
width="400" height="350" id="myFlash">
<param name="movie" value="videoRecorder2.swf"/>
<param name="quality" value="high"/>
<param name="flashvars" value="name=192.168.61.113" /> --传参数给flash
<embed src="videoRecorder2.swf" quality="high" width="400" height="350" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
name="myFlash" swLiveConnect="true"
flashvars="name=192.168.61.113"
/>
</object>
<br/>
<font color="red">温馨提示:在进行正式视频录像前,请先录制一小段视频<br/>以测试各种设备(特别是麦克风)是否能工作正常。</font>
</center>
</body>
</html>
启动相关服务,访问相关页面即可进行视频录像了。
分享到:
相关推荐
通过对Red5的基本概念、录音录像原理以及具体实现细节的讲解,可以帮助读者快速掌握Red5的使用方法。此外,还提供了Flash客户端与Red5服务器之间的交互方式,以便开发者能够更灵活地集成音视频功能。
Red5支持RTSP,意味着它可以与多种支持该协议的设备和软件进行交互,如IP摄像头或数字视频录像机。 8. **系统架构与部署** 实例中的Red5应用程序可能涉及服务器端的配置、数据库集成以及负载均衡等高级话题。理解...
Red5是一个开源的流媒体服务器平台,使用Java语言编写,主要用于支持Flash流媒体的实时通信和数据传递。它不仅可以传输音频和视频内容,还可以用于直播、录像以及交互式应用程序等场景。 扩展设计方面,为了适应...
如果我们要在Flowplayer中播放由Red5服务器提供的录像,我们需要确保Flowplayer支持RTMP协议,并正确配置流的URL。例如: ```javascript flowplayer("#player", { rtmp: { server: "rtmp://your.red5.server....
关于RED5配置说明文件中提到的一些资源以及视频文件,列表如下: oflaDemo.rar red5chat_v2.2_Freedevelopment.net.zip setup-Red5-0.8.0.exe 关于访问等的视频录像说明.exe
在构建一个基于Red5和Android的直播系统时,我们需要理解几个关键知识点,这些知识点涵盖了从服务端架构到客户端实现的全过程。以下是对这个直播系统架构的详细解释: 1. **Red5服务器**:Red5是一个开源的流媒体...
CvInvoke.Rectangle(frame, face, new Bgr(Color.Red).MCvScalar, 2); } ``` 现在,我们已经学会了如何捕获摄像头视频和检测人脸,接下来将实现视频录像功能。EmguCV提供了`VideoWriter`类来保存视频到文件。以下...
document.querySelector('h1').style.color = 'red'; ``` ### 创建录像网站的技术要点 #### 1. 视频播放支持 为了在网站上播放视频,需要了解如何嵌入视频文件以及处理视频流媒体。 - **HTML5 视频标签**:`...
一组用于海康威视摄像机、警报、雷达、NVR 等的本地节点。 描述 这是一组处理 ISAPI 海康威视消息的节点。 它仅适用于HIKVISION设备。 适用于摄像头、NVR、安全系统以及专用设备,如雷达(例如 DS-PR1-60、DS-PR1-...
10. **企业版特性**:针对Red Hat Enterprise Linux、SUSE Linux Enterprise Server等企业级发行版的特性和优势进行深入讲解。 通过这份【LINUX高级企业版教学录像(清华培训中心)】,你不仅可以获得理论知识,还...
标题“RED7Studios.AxNVR”暗示我们正在讨论一个与视频监控系统相关的软件,可能是一个网络视频录像机(NVR)的应用程序。RED7Studios可能是开发这个软件的公司,而.AxNVR可能是该软件的特定命名格式或者模块标识。 ...
使用Red Squirrel Cam,用户可以实现以下功能: 1. **实时监控**:系统能实时显示多个摄像头的画面,让用户随时掌握监控区域的情况。 2. **录像回放**:用户可以查看历史录像,便于分析事件或调查。 3. **报警触发*...
这通常通过校验MD5或SHA值来验证。然后,你需要一个安装媒介,可以是CD/DVD,也可以是USB驱动器。使用软件如Rufus或 Brasero 创建可启动的安装媒体。 接下来,进入安装过程。启动计算机并设置BIOS以从你的安装媒介...
此外,可以使用Node-RED或Home Assistant等物联网平台,实现数据的远程监控和自动化控制,比如当环境条件偏离预设范围时,自动触发通风、灌溉或照明设备。 总结,通过树莓派3构建的农业监控系统,实现了种植环境的...
"Linux学习网址(txt)Linux高级培训录像"这个压缩包显然旨在帮助用户深入理解并掌握Linux的相关知识。以下是对标题和描述中提及的知识点的详细解释: 1. **Linux安装和配置**:Linux的安装过程通常包括选择发行版、...
本视频教程全面详细地讲解演示如何安装Red Hat Linux系统,包括磁盘分区、网络和防火墙的配置、认证配置、X服务器的配置等等内容,非常超值,对初学Linux系统的朋友非常有帮助,因为实际操作非常重要,一起学习吧!
本书以目前red hat公司最新版本red hat enterprise linux 5为平台,对linux的网络服务应用进行了详细的讲解。全书分为12章,阐述了linux网络服务的知识,内容涵盖linux安装及网络环境搭建、samba服务、dns服务、dhcp...
一个基于FFmpeg的快速,易于使用的屏幕录制软件。 关于 bmrec是FFmpeg的前端,FFmpeg是一个程序,用于基于命令行的视频和音频文件处理。bmrec的GUI简单易用。 这是主菜单: 也有暗模式 要求 最新的Java版本。 下载 ...