• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

AS3实现的简单流媒体播放器

C# 水墨上仙 2038次浏览

AS3实现的简单流媒体播放器

package
{
	import flash.events.*;
	import flash.media.Video;
	import flash.display.Sprite;
	import flash.net.*;
	import flash.text.TextField;
	import fl.controls.Button;
 
	public class StreamingVideoPlayer extends Sprite {
		private var _videoURL:String;
		private var _video:Video;
		private var _vidDuration:Number;
		private var _vidXmax:Number;
		private var _vidYmax:Number;
		private var _vidWidth:Number;
		private var _vidHeight:Number;
		private var _main_nc:NetConnection = new NetConnection();
		private var _serverLoc:String;
		private var _ns:NetStream;
		private var _start_btn:Button;
 
		/* ------------Contructors/Initialization-----------*/
		public function StreamingVideoPlayer(serverLoc:String,
			flvLocation:String,vidDuration:Number,vidXmax:Number,
			vidYmax:Number):void {
			//set video params
			_videoURL = flvLocation;
			_vidDuration = vidDuration;
			_vidXmax = vidXmax;
			_vidYmax = vidYmax;
			//add eventListeners to NetConnection and connect
			_main_nc.addEventListener(NetStatusEvent.NET_STATUS,
				onNetStatus);
			_main_nc.addEventListener(
				SecurityErrorEvent.SECURITY_ERROR,
				securityErrorHandler);
			_main_nc.connect(serverLoc);
		}
		private function onNetStatus(event:Object):void {
			//handles NetConnection and NetStream status events
			switch (event.info.code) {
				case "NetConnection.Connect.Success":
					//play stream if connection successful
					connectStream();
					break;
				case "NetStream.Play.StreamNotFound":
					//error if stream file not found in
					//location specified
					trace("Stream not found: " + _videoURL);
					break;
				case "NetStream.Play.Stop":
					//do if video is stopped
					videoPlayComplete();
					break;
			}
			//trace(event.info.code);
		}
 
		/* -------------------Connection------------------- */
		private function connectStream():void {
			//netstream object
			_ns = new NetStream(_main_nc);
			_ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,
				asyncErrorHandler);
			_ns.addEventListener(NetStatusEvent.NET_STATUS,
				onNetStatus);
			//other event handlers assigned 
			//to the netstream client property
			var custom_obj:Object = new Object();
			custom_obj.onMetaData = onMetaDataHandler;
			custom_obj.onCuePoint = onCuePointHandler;
			custom_obj.onPlayStatus = playStatus;
			_ns.client = custom_obj;
			//attach netstream to the video object
			_video = new Video(_vidXmax,_vidYmax);
			_video.attachNetStream(_ns);
			//video position could be parameterized but hardcoded
			//here to account for optional movie frame border
			_video.x = 1;
			_video.y = 1;
			addChild(_video);
			setVideoInit();
			_ns.play(_videoURL);
		}
 
		/* -------------NetStream actions and events-------------- */
		private function videoPlayComplete():void {
			setVideoInit();
		}
 
		private function setVideoInit():void {
			_ns.play(_videoURL);
			_ns.pause();
			_ns.seek(_vidDuration/2);
			addStartBtn();
		}
		private function playStatus(event:Object):void {
			//handles onPlayStatus complete event if available
			switch (event.info.code) {
				case "NetStream.Play.Complete":
					//do if video play completes
					videoPlayComplete();
					break;
			}
			//trace(event.info.code);
		}
		private function playFlv(event:MouseEvent):void {
			_ns.play(_videoURL);
			//_ns.seek(192); //used for testing
			removeChild(_start_btn);
		}
		private function pauseFlv(event:MouseEvent):void {
			_ns.pause();
		}
 
		/* ---------Buttons, labels, and other assets------------- */
		//could be placed in it's own VideoControler class
		private function addStartBtn():void {
			_start_btn = new Button();
			_start_btn.width = 80;
			_start_btn.x = (_vidXmax-_start_btn.width)/2+_video.x;
			_start_btn.y = (_vidYmax-_start_btn.height)/2+_video.y;
			_start_btn.label = "Start Video";
			_start_btn.addEventListener(MouseEvent.CLICK,playFlv);
			//addChild(_start_btn);
		}
 
		/* -----------------Information handlers---------------- */
		private function onMetaDataHandler(metaInfoObj:Object):void {
			_video.width = metaInfoObj.width;
			_vidWidth = metaInfoObj.width;
			_video.height = metaInfoObj.height;
			_vidHeight = metaInfoObj.height;
			//trace("metadata: duration=" + metaInfoObj.duration + 
				//"width=" + metaInfoObj.width + " height=" +
				//metaInfoObj.height + " framerate=" +
				//metaInfoObj.framerate);
		}
		private function onCuePointHandler(cueInfoObj:Object):void {
			//trace("cuepoint: time=" + cueInfoObj.time + " name=" + 
				//cueInfoObj.name + " type=" + cueInfoObj.type);
		}
 
		/* -----------------------Error handlers------------------------ */
		private function securityErrorHandler(event:SecurityErrorEvent):
		void {
			trace("securityErrorHandler: " + event);
		}
		private function asyncErrorHandler(event:AsyncErrorEvent):void {
			trace(event.text);
		}
	}
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明AS3实现的简单流媒体播放器
喜欢 (0)
加载中……