as 3加载mp3

简介: package { import flash.display.*; import flash.events.*; import flash.media.Sound; import flash.
package {
	import flash.display.*;
	import flash.events.*;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.media.SoundLoaderContext;
	import flash.media.ID3Info;
	import flash.net.URLRequest;
	import flash.external.ExternalInterface;
	import flash.utils.*;
	
	public class alarmSound extends Sprite{
		private var alarm:Sound;
		private var mp3URL:String = "http://img.3bu.cn/ring/ring/201003041507952.mp3"; //"alarm_2.mp3";
		private var song:SoundChannel;
		
		function alarmSound() {
			inited();
		}
		
		private function inited():void {
			alarm = new Sound();
			
			var req:URLRequest = new URLRequest(mp3URL);
			var buffer:SoundLoaderContext = new SoundLoaderContext(5*1000);
			
			alarm.addEventListener(Event.COMPLETE, completeHandler);
			alarm.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			alarm.addEventListener(ProgressEvent.PROGRESS, processHandler);
			alarm.addEventListener(Event.ID3, id3Handler);
			
			alarm.load(req, buffer);
			
			song = alarm.play(0, 0);//从0开始,循环1次
			
			song.addEventListener(Event.SOUND_COMPLETE, playCompleteHandler);			
			
		}
		
		private function processHandler(pro:ProgressEvent):void {
			var percent:Number = Math.floor(pro.bytesLoaded/pro.bytesTotal*100*100)/100;
			trace(pro.bytesLoaded + "---" + pro.bytesTotal + "已加载..." + percent + "%");
		}
		
		private function playCompleteHandler(...args):void {
			//trace(alarm.length/1000 + "---" + song.position/1000);
			
			var estimatedTotal:Number = Math.ceil(alarm.length / (alarm.bytesLoaded / alarm.bytesTotal));
			var position:Number = Math.round(100 * (song.position / estimatedTotal));
			
			trace(estimatedTotal/1000/60 + "----" + position);
		}
		
		private function completeHandler(evt:Event):void {
			alarm.removeEventListener(Event.COMPLETE, completeHandler);
			
			//trace(alarm.length + "---" + song.position);
		}
		
		private function ioErrorHandler(evt:Event):void {
			
		}
		
		private function id3Handler(evt:Event):void {
			var id3:ID3Info = alarm.id3;
			
			trace('音乐名称:' + id3.songName);
			trace('专辑: ' + id3.album);
			trace('艺术家:' + id3.artist);
		}
		
	}	
}
目录
相关文章
|
6月前
|
存储 编解码
如何将BDMV文件转换为MKV或MP4?
许多拥有蓝光光驱的用户可能在电脑上存储了一些BDMV文件。虽然这些文件提供了高质量的视频和音频,但由于其文件格式的限制,它们可能无法在某些设备上播放。因此,将BDMV文件转换为常见的MKV或MP4文件就变得非常重要。本文将介绍一种简单而有效的方法来完成这个转换过程。
942 2
|
4月前
|
数据库
提取本地路径Jpg或者mp4文件的名字,导入mp4的名字,并导入数据库的源码
提取本地路径Jpg或者mp4文件的名字,导入mp4的名字,并导入数据库的源码
|
自然语言处理 PHP 数据安全/隐私保护
带你写一个Mp文件解析器-Mp3文件结构全解析(一)
ID3V2一共有四个版本,ID3V2.1/2.2/2.3/2.4,目前流行的播放软件一般只支持第三版即ID3V2.3,由于ID3V1记录在文件的末尾处,ID3V2就只能记录在文件的首部了,也是因为这个原因,对ID3V2的操作比ID3V1要慢,而且ID3V2的结构比ID3V1的结构复杂的多,但是ID3V2可以记录更多的信息,长度可变
23269 4
|
存储 编解码 算法
MP4文件格式的解析,以及MP4文件的分割算法
MP4文件格式的解析,以及MP4文件的分割算法
167 0
|
编解码 对象存储
关于mp4 在线播放加载时间长的问题
关于mp4 在线播放加载时间长的问题
关于mp4 在线播放加载时间长的问题
|
算法 索引
带你写一个Mp文件解析器-Mp3文件结构全解析(二)
每个FRAME 都有一个帧头FRAMEHEADER,长度是4BYTE(32bit),帧头后面可能有两个字节的CRC 校验,这两个字节的是否存在决定于FRAMEHEADER 信息的第16bit, 为0 则帧头后面无校验,为1 则有校验,校验值长度为2 个字节,紧跟在FRAMEHEADER 后面,接着就是帧的实体数据了
207 0
|
存储 编解码 算法
MP4格式解析
MP4视频文件封装格式是基于QuickTime容器格式定义的,因此参考QuickTime的格式定义对理解MP4文件格式很有帮助。MP4文件格式是一个十分开放的容器,几乎可以用来描述所有的媒体结构,MP4文件中的媒体描述与媒体数据是分开的,并且媒体数据的组织也很自由,不一定要按照时间顺序排列,甚至媒体数据可以直接引用其他文件。同时,MP4也支持流媒体。MP4目前被广泛用于封装h.264视频和AAC音频,是高清视频的代表。MP4格式的官方文件后缀名是“.mp4”,还有其他的以mp4为基础进行的扩展或者是缩水版本的格式,包括:M4V, 3GP, F4V等。
294 0
|
druid 前端开发 Java
数据持久化技术——MP(一)
数据持久化技术——MP(一)
304 0
数据持久化技术——MP(一)
|
SQL XML 前端开发
数据持久化技术——MP(二)
数据持久化技术——MP(二)
222 0
数据持久化技术——MP(二)