`

flex NetStream动态加载视频利用SoundTransform控制音量

    博客分类:
  • flex
 
阅读更多
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/03/01/displaying-a-video-in-flex-using-the-netconnection-netstream-and-video-classes/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				layout="vertical"
				verticalAlign="middle"
				backgroundColor="white"
				viewSourceURL="srcview/index.html" xmlns:local="*"
				initialize="init();">

	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			private var urlArr:Array=["http://221.122.36.143/oa/video/1.flv", "http://221.122.36.143/oa/video/2.flv", "http://221.122.36.143/oa/video/p2.mp4"];
			public function init():void{
				myVideo.urlArr = urlArr;
				myVideo.total = 100000;
//				Alert.show("1==>>"+myVideo.urlArr.length);
			}
			
		]]>
	</mx:Script>

	<local:mVideo id="myVideo"/>

</mx:Application>

第二个文件
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"
		  creationComplete="setTransformVolume();">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.SliderEvent;

			private var nc:NetConnection;
			private var ns:NetStream;
			private var nc2:NetConnection;
			private var ns2:NetStream;
			private var video:Video;

			[Bindable]
			public var urlArr:Array=null;
			[Bindable]
			public var total:Number=0;

			private var count:int=0;
			private var finished1:int=1; //1:播放正在进行;0:播放结束
			private var finished2:int=0; //1:播放正在进行;0:播放结束

			private var volumeTransform:SoundTransform;

			
			private function setTransformVolume():void{
				volumeTransform=new SoundTransform();
				slider.value = volumeTransform.volume;
				slider.tickInterval = slider.snapInterval;
				slider.liveDragging = true;
				slider.addEventListener(Event.CHANGE, volumeChangeHandler);
				init();
			}
			
			private function init():void
			{
				Alert.show("" + total);
				
				var nsClient:Object={};
				nc=new NetConnection();
				nc.connect(null);
				ns=new NetStream(nc);
				ns.play(urlArr[count]);
				ns.client=nsClient;
				ns.soundTransform=volumeTransform;
				ns.addEventListener(NetStatusEvent.NET_STATUS, myTest1);
				
				video=new Video();
				video.name="video1";
				video.width=uic.width;
				video.height=uic.height;
				video.attachNetStream(ns);
				if (uic.getChildByName("video1") != null)
				{
					uic.removeChild(uic.getChildByName("video1"));
				}

				count++;
			}
			private function volumeChangeHandler(event:SliderEvent):void {
				volumeTransform.volume = slider.value;
				ns.soundTransform = volumeTransform;
				ns2.soundTransform = volumeTransform;
			}
			private function init2():void
			{

				var nsClient:Object={};

				nc2=new NetConnection();
				nc2.connect(null);
				ns2=new NetStream(nc2);
				ns2.play(urlArr[count]);
				ns2.client=nsClient;
				ns2.soundTransform=volumeTransform;
				ns2.addEventListener(NetStatusEvent.NET_STATUS, myTest2);
				
				video=new Video();
				video.name="video2";
				video.width=uic.width;
				video.height=uic.height;
				video.attachNetStream(ns2);
				if (uic.getChildByName("video2") != null)
				{
					uic.removeChild(uic.getChildByName("video2"));
				}
				count++;
			}

			private function myTest1(event:NetStatusEvent):void
			{
				trace("count1==>>" + count);
				trace("count1 onStatus:" + event.info.code);
				if (event.info.code == "NetStream.Buffer.Full")
				{
					if (count == 1)
					{
						uic.addChild(video);
						init2();
					}
					if (finished2 == 1)
					{
						ns.seek(0);
						ns.pause();
					}
				}
				else if (event.info.code == "NetStream.Play.Stop")
				{
					finished1=0;
					finished2=1;
					uic.addChild(video);
					ns2.togglePause();
					if (count <= urlArr.length)
					{
						init();
					}

				}

			}

			private function myTest2(event:NetStatusEvent):void
			{
				trace("count2==>>" + count);
				trace("count2 onStatus:" + event.info.code);
				if (event.info.code == "NetStream.Buffer.Full")
				{
					if (finished1 == 1)
					{
						ns2.seek(0);
						ns2.pause();
					}
				}
				else if (event.info.code == "NetStream.Play.Stop")
				{
					finished2=0;
					finished1=1;
					uic.addChild(video);
					ns.togglePause();
					if (count <= urlArr.length)
					{
						init2();
					}
				}

			}

			public function stopVideo():void
			{
				uic.stop();
			}
		]]>
	</mx:Script>
	<mx:VideoDisplay id="uic"
					 width="550"
					 height="450"
					 volume="{slider.value}"/>

	<mx:ControlBar>
		<mx:HSlider id="slider"
					minimum="0.0"
					maximum="1.0"
					snapInterval="0.1"
					tickInterval="0.1"
					liveDragging="true"/>
		<mx:Button label="Play/Pause"
				   click="uic.play();"/>
		<mx:Button label="Rewind"
				   click="stopVideo();"/>
	</mx:ControlBar>
</mx:Panel>

分享到:
评论

相关推荐

    flex两个netstream实现视频分段加载播放

    flex两个netstream实现视频分段加载播放 。 适用于flash,flex

    flex的视频播放器

    在本话题中,我们重点关注的是基于AIR的Flex视频播放器,它能够通过XML动态加载视频文件,实现更加灵活和定制化的视频播放体验。 首先,让我们深入理解Adobe AIR。AIR允许开发者利用Flex和Flash技术创建桌面应用,...

    flex视频添加背景图片

    本教程将详细讲解如何为Flex VideoDisplay组件添加背景图片,以及如何利用Flex播放器的加载事件和方法进行有效控制。 首先,我们要明白在Flex中添加背景图片的基本步骤。这通常涉及到使用 mx.graphics.ImageSource ...

    netStream视频结束判断

    netStream视频结束判断

    flex播放视频video调用示例

    `Video`组件是Adobe Flex SDK中的核心组件之一,它允许我们轻松地在Flash Player或Adobe AIR应用程序中嵌入和控制视频播放。本篇文章将深入探讨如何在Flex中使用`Video`组件来播放视频,以及相关的关键知识点。 ...

    flex 视频播放

    这些组件能够与FLVPlayback类配合工作,FLVPlayback是处理视频流的核心类,它负责加载、播放和控制视频。 在描述中提到的".actionScriptProperties"文件,这是Flash Builder中的项目配置文件,用于存储ActionScript...

    Flex视频聊天室源码

    总结一下,这个Flex视频聊天室源码展示了如何利用Flex技术和ActionScript 3.0开发实时的视频通信应用。通过理解Flex中的核心组件,如NetConnection、NetStream以及ActionScript的面向对象特性,开发者可以深入研究...

    FM.rar_FluorineFx_flex_flex 视频_视频聊天

    本篇将深入探讨如何利用FluorineFx与Flex技术来构建一个功能完备的视频聊天室。FluorineFx是一款开源的Adobe Flex和.NET之间的AMF(Action Message Format)桥接库,它允许Flex客户端与服务器端进行高效的数据交换。...

    flex 视频聊天 基于red5

    Flex视频聊天基于Red5是一种利用Adobe Flex技术和OpenSource Media Framework (OSMF)的Red5服务器实现的实时视频通信解决方案。Flex是一种开源的编程框架,主要用于构建富互联网应用程序(RIA),而Red5则是一个开放...

    flv打包下载 提供一个flv格式的视频和一个flex测试代码

    5. 控制播放:你可以通过`NetStream`对象的方法如`pause()`, `resume()`, `seek()`等来控制视频的播放状态。 **Flex测试代码** 压缩包中的"flv打包下载-Flex学习用例"很可能是这样的一个示例项目,包含了一个演示...

    Flex视频播放器(支持rtmp协议)开发代码

    3. **开始、暂停、停止按钮**: 通过监听按钮点击事件,调用NetStream对象的play()、pause()和stop()方法来控制视频播放。 4. **声音大小控制**: 可以通过调整Slider的值来改变声音的大小。在Flex中,我们可以使用...

    Flex播放器代码实例及在线运行效果

    - `NetStream`:处理视频流,与`NetConnection`配合使用加载和播放视频。 3. **代码实例** 创建一个基本的Flex播放器涉及以下步骤: - 初始化`NetConnection`对象并连接到服务器。 - 创建`NetStream`对象,将其...

    Flex4 简单视频聊天例子

    10. **用户体验设计**:除了技术实现,视频聊天应用还需要考虑用户界面的设计,如何清晰地显示视频、控制音量、开始/结束通话等功能,以及如何处理网络状况不佳时的错误提示,都是设计中不可忽视的部分。 通过这个...

    利用fms服务器和flex来做在线视频聊天.docx

    本文将详细介绍如何利用FMS服务器(Flash Media Server)和Flex技术实现在线视频聊天功能。FMS服务器是一种强大的实时流媒体服务器,它支持多种实时通信协议,包括RTMP(Real-Time Messaging Protocol),使得视频和...

    Fms3和Flex打造在线多人视频会议和视频聊天附原代码

    在Flex中开发视频聊天应用,可以利用Flex SDK中的NetConnection和NetStream类来建立与服务器的连接,并处理音视频流。 接下来,我们关注Flash Media Server 3。FMS3是Adobe推出的服务器端产品,它支持实时音频、...

    flex+fms实现视频直播源码

    Flex+FMS实现视频直播源码是一种基于Adobe Flex和Flash Media Server (FMS)技术的视频直播解决方案。这个项目提供了一个简单示例,演示了如何利用Flex进行摄像头和音频的捕获与录制,以及如何将这些内容实时推送到...

    flex视频播放器

    开发者通常会利用Flex提供的事件监听器来实现这些功能,例如`netStatus`事件可以用来检测视频的加载状态,`playheadUpdate`事件则用于跟踪播放进度。 在`player`文件夹下,可能包含了播放器的源代码,包括自定义的...

    FLEX视频摄像头录制上传到服务器及FMS服务器的安装与配置

    然后,可以使用Video对象显示摄像头的实时预览,并利用NetStream类记录视频流。以下是一个简单的录制示例: ```actionscript var camera:Camera = Camera.getCamera(); var video:Video = new Video(); video....

    Flex3 FXVideo

    在Flex 3中,视频功能提供了强大的工具来集成、播放和控制视频内容。以下是一些关键知识点: 1. **Flash Player支持**:Flex 3依赖于Flash Player作为运行环境,因此理解Flash Player的版本和特性对于充分利用FX...

    Flex视频语音文字聊天程序

    综上所述,这个Flex视频语音文字聊天程序不仅展示了Flex框架在处理多媒体数据的强大能力,同时也体现了网络编程、用户界面设计以及安全控制等方面的知识点,是一个综合性的技术实践案例。对于开发者而言,深入理解...

Global site tag (gtag.js) - Google Analytics