`
kongshanxuelin
  • 浏览: 922487 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

在线视频录制的实现(附源码)

阅读更多

在开发有些互联网领域的产品时,在线视频录制的功能必不可少,下面我们就在red5record开源产品的基础上,修改它来实现吧,在这之前,你可以通过这个地址:http://t.faqee.com/m2/red5rec/index.html?to=123,来首先体验一下,其中123参数可以是任意的,因为这个是代表在线录制视频的文件名!

 

我的开发环境是Flex 4+Eclipse 3.6,下面是完整的源码组成:

 

界面:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
				applicationComplete="init()" xmlns:ns1="components.*" xmlns:ns2="*" xmlns:gauge="components.gauge.*">
	<mx:states>
		<mx:State name="player">
			<mx:RemoveChild target="{myWebcam}"/>
			<mx:RemoveChild target="{cam1_btn}"/>
			<mx:RemoveChild target="{blink1}"/>
			<mx:RemoveChild target="{canvas1}"/>
			<mx:RemoveChild target="{micLevel}"/>
			<mx:AddChild relativeTo="{canvas2}" position="lastChild">
				<mx:Canvas label="player" width="100%" height="100%">
							<mx:VideoDisplay id="videoPlayer"  mouseMove="rollOver(event)" mouseOut="rollOut(event)"
								 right="0" left="0"  complete="videoIsComplete()" bottom="0" top="0"/>
							<mx:Panel id="videoOptionsPanel" layout="absolute" 
									  verticalScrollPolicy="off" horizontalScrollPolicy="off" 
									  cornerRadius="5" backgroundColor="#DFDFDF" 
									  headerHeight="0" left="0" right="0" 
								
								height="40" alpha="0.8" bottom="0" borderStyle="solid" backgroundAlpha="0.6">    
							
							<mx:ProgressBar id="loadProgress" label="" mode="event"
							 minimum="0" maximum="{videoPlayer.totalTime}" height="5"
							 source="{ videoPlayer}" trackHeight="7"  left="80" right="44" bottom="3"/>
							
							<mx:HSlider id="position" height="9"   dataTipFormatFunction="formatPositionToolTip"  slideDuration="0"
							 value="{videoPlayer.playheadTime}" 	 minWidth="10"   minimum="0" maximum="{videoPlayer.totalTime}" left="80" right="44" bottom="10" showTrackHighlight="true"
							  styleName="scrollBar" thumbPress="thumbPressed()" thumbRelease="thumbReleased()"
							 
							mouseDown="thumbClicked(event)" allowTrackClick="true"/> 
							
							<mx:Button id="playPauseBut" click="playPause();" width="35" height="25" cornerRadius="5" left="0" bottom="0" styleName="playButton" toggle="true" toolTip="Play/Pause"/>
							<mx:Button id="stopBut" styleName="arial10E" left="38" width="35" height="25" cornerRadius="5" bottom="0" 	 toolTip="Stop" click="stopVideo()" icon="@Embed(source='assets/player_stop.png')"/>
							
							<gauge:Gauge id="volume" gaugeClick="handleGaugeEvent(event)" liveDragging="true" right="-1" bottom="0" width="40" height="20" needleThickness="0.3" coverColor="#0000FF" coverAlpha="0.8" 
								coverDropShadowEnabled="false" />
							<mx:Label y="-2" text="{formatPositionToolTip(videoPlayer.playheadTime)} / {formatPositionToolTip(videoPlayer.totalTime)}" width="141" id="timer_txt" styleName="arial10E" horizontalCenter="0" textAlign="center"/>
							
							
							</mx:Panel>
						</mx:Canvas>
			</mx:AddChild>
			<mx:AddChild position="lastChild">
				<mx:Button x="0" y="0" label="{myRecorder.backText}" icon="@Embed(source='assets/back.png')" click="stopVideo();currentState=&quot;&quot;"/>
			</mx:AddChild>
		</mx:State>
	</mx:states>
<mx:Script source="red5recorder.as" />
<mx:Style source="style.css" />

		<mx:Canvas label="recorder" width="100%" height="100%" verticalScrollPolicy="off" horizontalScrollPolicy="off" id="canvas2">
			<mx:VideoDisplay id="myWebcam" left="0" top="0" bottom="16" right="0"/>
			<mx:Button y="0" icon="@Embed('assets/webcamON.png')" height="18" width="35"
				id="cam1_btn" click="webcamParameters()" toolTip="Parameters" label="1" x="0"/>
			<mx:ProgressBar label="volume" labelPlacement="center" minimum="0" maximum="100" id="micLevel" mode="manual" visible="{myRecorder.showVolume}" bottom="0" right="0" left="0"/>
			<mx:Canvas height="36" cornerRadius="5" borderStyle="solid" borderColor="#000000" backgroundColor="#FFFFFF" backgroundAlpha="0.5" alpha="0.6" id="canvas1" left="0" right="0" bottom="16">
				<mx:Button label="录制" toggle="true" width="84" height="33" icon="@Embed(source='assets/rec32.png')" top="0" id="rec_btn" click="recClicked()" toolTip="Click here to START/STOP recording" visible="{myRecorder.cameraDetected}"/>
				<mx:Label x="184" y="6" text="{myRecorder.timeLeftText} {timeLeft}" width="124" color="#000000"/>
				<!--
				<mx:Button label="play" width="84" height="33" icon="@Embed(source='assets/player_play.png')" top="0" id="replay_btn" click="replay()" toolTip="点击这里开始/停止在线录制" x="92" visible="{myRecorder.hasRecorded}"/>
				-->
			</mx:Canvas>
			<ns1:Blink y="0" width="217" text="{myRecorder.recordingText}" color="#FC0000" interval="1000" textAlign="right" fontWeight="bold" displayed="{rec_btn.selected}" id="blink1" right="0"/>
		</mx:Canvas>
		

	<ns1:VideoContainer right="0" bottom="0"/>
	
</mx:Application>

 修改你自己的配置在Recorder.as文件中:

package classes
{
	[Bindable] public class Recorder
	{
		public var maxLength:int=120;
		public var fileName:String="video";
		public var width:int=320;
		public var height:int=240;
		public var server:String="rtmp://www.test.com/test";
		public var fps:int=15;
		public var microRate:int=22;
		public var showVolume:Boolean=true;
		public var recordingText:String="录制中...";
		public var timeLeftText:String="剩余时间:";
		public var timeLeft:int;
		public var mode:String="record";
		public var hasRecorded:Boolean=false;
		public var backToRecorder:Boolean=true;
		public var backText:String="返回";
		public var cameraDetected:Boolean=false;
		
		public function Recorder()
		{	timeLeft = maxLength;
			mode="record";
			/*this.maxLength = maxLength;
			this.fileName = fileName;
			this.width = width;
			this.height = height;
			this.server = server;*/
		}

	}
}

 整个源码的包请在附件中下载!

 

3
2
分享到:
评论

相关推荐

    C#实现语音视频录制-附demo

    在C#中实现语音视频录制是一项常见的需求,特别是在开发视频会议、监控系统或者网络招聘平台等应用时。...通过提供的DEMO源码,开发者可以更好地理解并实现这一功能,为自己的项目增添语音视频录制能力。

    Fms 视频录制屏幕共享 附源码.doc

    文档"《Fms 视频录制屏幕共享 附源码.doc》"主要涉及使用Adobe Flash Media Server (FMS) 实现屏幕共享和视频录制的功能。FMS 是一款强大的实时流媒体服务器,它允许开发者创建实时交互式的多媒体应用程序,包括视频...

    自己用C++写的一个多功能简易录屏软件(附源码)

    自己用C++写的一个多功能简易录屏软件Ericord(附源码) 由自己编写的一个简单的录屏软件,但功能样样齐全,可以满足日常需求。(可调整区域,可自动检测分辨率,可调整帧速率,可调整输出格式[mpg/avi格式都支持]...

    [原创] Fms 视频录制屏幕共享 附

    "FMS 视频录制屏幕共享"这个主题涉及到的是如何使用FMS实现屏幕共享并进行视频录制的技术。在Web应用中,屏幕共享是一项非常实用的功能,常用于在线会议、远程教育、游戏直播等场景。 【描述】:虽然描述中没有提供...

    C#实现摄像头拍照水印录像底片附源码

    本项目以"C#实现摄像头拍照水印录像底片附源码"为主题,聚焦于利用C#进行实时视频捕获、图像处理以及添加水印等功能,这对于创建各种多媒体应用,如监控系统、直播软件或图像编辑工具等具有重要意义。 首先,我们...

    Android开发之拍照功能实现(附源码)

    在Android中,摄像头服务是通过`android.hardware.Camera`类提供的,它允许开发者控制摄像头参数、捕获照片和录制视频。不过,自Android API 21(Lollipop)开始,谷歌引入了`android.hardware.camera2`包,这是一个...

    DirectX 详细教程附源码

    这个“DirectX 详细教程附源码”应该是面向初学者和开发者的一个全面指南,帮助他们理解DirectX的基本概念并提供实践操作的机会。 在教程中,你将学习到: 1. **DirectX的基础知识**:DirectX是由多个子组件组成的...

    小龟视频1.6APP双端影视对接苹果CMS反编译源码+视频教程

    【bandicam 2021-08-24 21-48-02-701.mp4】可能是一个录制的屏幕视频教程,展示了如何使用小龟视频、对接苹果CMS或者展示了反编译源码的过程。这类视频教程对于初学者来说非常有帮助,能够直观地看到操作步骤和实际...

    安卓Andriod源码——基于手机的远程视频监控系统.zip

    在本项目中,“安卓Andriod源码——基于手机的远程视频监控系统”是一个实现手机远程视频监控的应用程序。这个项目的核心是利用Android平台的功能,将手机转变为一个可远程访问的摄像头,允许用户通过网络查看实时...

    Android应用开发揭秘(附源码)

    网络通信通常使用HttpURLConnection、OkHttp库或Retrofit框架,多媒体处理涵盖音频、视频的播放和录制,硬件访问则可能涉及到传感器、GPS、蓝牙等硬件接口。 源码部分通常会提供书中案例的实现代码,这有助于读者更...

    Android 开发范例代码大全(第2版)(附源码)

    4. **多媒体处理**:包含音频、视频的播放与录制,图片的加载、裁剪与处理,以及摄像头的使用,帮助开发者构建多媒体功能丰富的应用。 5. **位置服务**:详细介绍了GPS、网络定位以及 fused location provider的...

    用Csharp 写的摄像头捕获程序(附源码)

    我们将围绕标题“用Csharp写的摄像头捕获程序(附源码)”以及描述中的功能来展开,包括捕获图片和录制视频。同时,我们也会涉及与之相关的标签,如“csharp”、“源代码”、“camera”和“捕获”。 首先,C#提供了一...

    vc++ 应用源码包_1

    实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet...

    vc++ 应用源码包_2

    实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet...

    vc++ 应用源码包_6

    实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet...

    vc++ 应用源码包_5

    实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet...

    vc++ 应用源码包_3

    实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet...

Global site tag (gtag.js) - Google Analytics