Media
Media对象提供录制和回放设备上的音频文件的能力。
复制
var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);
备注:Media的当前实现并没有遵守W3C媒体捕获的相关规范,目前只是为了提供方便。未来的实现将遵守最新的W3C规范并可能不再支持当前的APIs。
参数:
  • src:一个包含音频内容的URI。(DOMString类型)
  • mediaSuccess:(可选项)当一个Media对象完成当前的播放、录制或停止操作时触发的回调函数。(函数类型)
  • mediaError(可选项)当出现错误时调用的回调函数。(函数类型)
  • mediaStatus:(可选项)当状态发生变化的时候调用的回调函数。(函数类型)
方法:
另外的只读属性:
  • _position:以秒为单位的音频播放位置,播放过程中不会自动更新,通过调用getCurrentPosition进行更新。
  • _duration:以秒为单位的媒体时长。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
media.getCurrentPosition 
返回返回一个音频文件的当前的位置。
复制
media.getCurrentPosition(mediaSuccess, [mediaError]);
参数:
  • mediaSuccess:成功的回调函数,返回当前的位置。
  • mediaError:(可选项)如果发生错误时调用的回调函数。
说明:
media.getCurrentPosition是一个异步函数,用户返回一个Media对象所指向的音频文件的当前位置,同时会对Media对象的_position参数进行更新。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 音频播放器
var my_media = new Media(src, onSuccess, onError);

// 每秒更新一次媒体播放到的位置
var mediaTimer = setInterval(function() {
	// 获得媒体位置
	my_media.getCurrentPosition(
		// 获得成功后调用的回调函数
		function(position) {
			if (position > -1) {
				console.log((position) + " sec");
			}
		},
		// 发生错误后调用的回调函数
		function(e) {
			console.log("Error getting pos=" + e);
		}
	);
}, 1000);
完整的范例:
复制
	
Media Example


media.getDuration 
返回音频文件的时间长度。
复制
media.getDuration();
说明:
media.getDuration是一个同步函数,如果音频时长已知的话则返回以秒为单位的音频文件时长,如果时长不可知的话则返回-1。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 音频播放器
var my_media = new Media(src, onSuccess, onError);

// 获得时间长度
var counter = 0;
var timerDur = setInterval(function() {
	counter = counter + 100;
	if (counter > 2000) {
		clearInterval(timerDur);
	}
	var dur = my_media.getDuration();
	if (dur > 0) {
		clearInterval(timerDur);
		document.getElementById('audio_duration').innerHTML = (dur/1000) + " sec";
	}
}, 100);
完整的范例:
复制
	
Media Example


media.play 
开始或恢复播放一个音频文件。
复制
media.play();
说明:
media.play是一个用于开始或恢复播放音频文件的同步函数。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 播放音频文件
function playAudio(url) {
	// 播放url指向的音频文件
	var my_media = new Media(url,
	// 播放成功后调用的回调函数
	function() {
   		console.log("playAudio():Audio Success");
	},
	// 播放出错后调用的回调函数
	function(err) {
		console.log("playAudio():Audio Error: "+err);
	});

	// 播放音频文件
	my_media.play();
}
完整的范例:
复制
	
Media Example


media.pause 
暂停播放一个音频文件。
复制
media.pause();
说明:
media.pause是一个用于暂停播放音频文件的同步函数。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 播放音频
function playAudio(url) {
	// 播放url指向的音频文件
	var my_media = new Media(url,
		// 获取成功后调用的回调函数
		function() {
			console.log("playAudio():Audio Success");
		},
		// 发生错误后调用的回调函数
		function(err) {
			console.log("playAudio():Audio Error: "+err);
		}
	)

	// 播放音频
	my_media.play();

	// 暂停10秒钟
	setTimeout(function() {
		media.pause();
   	}, 10000);        
}
完整的范例:
复制
	
Media Example


media.release 
释放底层操作系统音频资源。
复制
media.release();
说明:
media.release是一个用于释放系统音频资源的同步函数。该函数对于Android系统尤为重要,因为Android系统的OpenCore(多媒体核心)的实例是有限的。开发者需要在他们不再需要相应Media资源时调用“release”函数释放它。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 音频播放器
var my_media = new Media(src, onSuccess, onError);

my_media.play();
my_media.stop();
my_media.release();
完整的范例:
复制
	
Media Example


media.seekTo 
在音频文件当中设置当前的位置。
复制
media.seekTo(milliseconds);
参数:
  • milliseconds:在音频文件当中设置重放的位置。
说明:
media.seekTo方法是一个异步方法,用来更新一个Media对象当中音频文件的位置, 同时更新Media对象的 _position参数
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 音频播放器
var my_media = new Media(src, onSuccess, onError);
my_media.play();
//5秒之后设置到10秒的位置
setTimeout(function() {
	my_media.seekTo(10000);
}, 5000);
完整的范例:
复制
	
Media Example


media.startRecord 
开始录制一个音频文件。
复制
media.startRecord();
说明:
media.startRecord是用于开始录制一个音频文件的同步函数。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 录制音频
function recordAudio() {
	var src = "myrecording.mp3";
	var mediaRec = new Media(src,
   		// 新建Media对象成功后调用的回调函数
   		function() {
	   		console.log("recordAudio():Audio Success");
   		},

   		// 新建Media对象出错后调用的回调函数
   		function(err) {
	   		console.log("recordAudio():Audio Error: "+ err.code);
   		}
	);

	// 录制音频
	mediaRec.startRecord();
}
完整的范例:
复制
	
Device Properties Example


iOS 的特异情况:
  • 用于录制的文件必须已经存在并是.wav类型,可以通过File API来进行文件的创建。
media.stop 
停止播放一个音频文件。
复制
media.stop();
说明:
media.stop函数是一个用于停止播放音频文件的同步函数。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 播放音频
function playAudio(url) {
// 播放url指向的音频文件
var my_media = new Media(url,
	// 新建Media对象成功后调用的回调函数
   	function() {
	   	console.log("playAudio():Audio Success");
   	},
   	// 新建Media对象出错后调用的回调函数
   	function(err) {
	   	console.log("playAudio():Audio Error: "+err);
	}
);

// 播放音频
my_media.play();

// 10秒钟后暂停播放
setTimeout(function() {
   	my_media.stop();
	}, 10000);        
}
完整的范例:
复制
	
Media Example


media.stopRecord 
停止录制一个音频文件。
复制
media.stopRecord();
说明:
media.stopRecord是用于停止录制一个音频文件的同步函数。
支持的平台:
  • Android
  • iOS
  • Windows Phone 7 ( Mango )
简单的范例:
复制
// 录制音频 
function recordAudio() { 
	var src = "myrecording.mp3"; 
	var mediaRec = new Media(src, 
		// 新建Media对象成功后调用的回调函数 
		function() { 
			console.log("recordAudio():Audio Success"); 
		}, 

		// 新建Media对象出错后调用的回调函数 
		function(err) { 
			console.log("recordAudio():Audio Error: "+ err.code); 
		}
	); 

	// 开始录制音频 
	mediaRec.startRecord(); 

	// 10秒后停止录制
	setTimeout(function() { 
		mediaRec.stopRecord(); 
	}, 10000); 
}
完整的范例:
复制
	
Device Properties Example 

 
MediaError 
当发生错误时,一个MediaError对象将传递给mediaError回调函数。
属性:
  • code:一个在下面常量列表中定义的错误代码。
  • message:用于描述错误细节的错误信息。
常量:
  • MediaError.MEDIA_ERR_ABORTED:媒体中断错误
  • MediaError.MEDIA_ERR_NETWORK:网络错误
  • MediaError.MEDIA_ERR_DECODE:编码错误
  • MediaError.MEDIA_ERR_NONE_SUPPORTED:格式不支持
说明:
当发生错误时,一个MediaError对象将通过mediaError回调函数传递给用户。
一个用户指定的回调函数,当媒体函数出现错误的时候被调用。
复制
function(error) { 
	// 处理错误 
}
参数:
  • error:设备返回的错误信息。(MediaError类型)