您的位置:首页 > Web前端 > HTML5

HTML5+规范:audio(音频的录制和播放功能)

2016-07-03 14:25 288 查看
   Audio模块用于提供音频的录制和播放功能,可调用系统的麦克风设备进行录音操作,也可调用系统的扬声器设备播放音频文件。通过plus.audio获取音频管理对象。

1、常量

  ROUTE_SPEAKER: 设备的扬声器音频输出线路,音频输出线路常量,值为0。音频播放时在设备的扬声器输出。

  ROUTE_EARPIECE: 设备听筒音频输出线路,音频输出线路常量,值为1。音频播放时在设备的听筒输出。

2、方法

2.1、getRecorder: 获取当前设备的录音对象

      AudioRecorder plus.audio.getRecorder();

说明:获取当前设备的录音对象,进行录音操作,录音对象是设备的独占资源,在同一时间仅可执行一个录音操作,否则可能会导致操作失败。

返回值:AudioRecorder
: 录音对象

平台支持:Android - 2.2+ (支持): 支持录制"amr"、"3gp"等格式文件。iOS - 4.3+ (支持): 支持录制"wav"、"aac"、"amr"等格式文件。

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Audio Example</title>
<script type="text/javascript">
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener( "plusready", onPlusReady, false );
var r = null;
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {
r = plus.audio.getRecorder();
}
function startRecord() {
if ( r == null ) {
alert( "Device not ready!" );
return;
}
r.record( {filename:"_doc/audio/"}, function () {
alert( "Audio record success!" );
}, function ( e ) {
alert( "Audio record failed: " + e.message );
} );
}
function stopRecord() {
r.stop();
}
</script>
</head>
<body>
<input type="button" value="Start Record" onclick="startRecord();"/>
<br/>
<input type="button" value="Stop Record" onclick="stopRecord();"/>
</body>
</html>

2.2、createPlayer: 创建音频播放对象

        AudioPlayer plus.audio.createPlayer( path );

说明:创建一个音频文件播放对象,用于打开音频文件并播放。可通过path参数指定要播放的音频文件。创建后返回播放对象,通过Audio.play方法开始播放。

参数:path: ( String ) 必选 音频文件路径

要播放的音频文件的路径。

返回值:AudioPlayer
: 音频播放对象

平台支持:Android - 2.2+ (支持): 支持"aac"、"3gp"、"amr"、"mp3"、"mp4"、"mid"、"ogg"、"wav"等格式文件。 支持播放网络路径音频,以http/https开头,如“http://demo.dcloud.net.cn/test/audio/apple.mp3”。iOS - 4.3+ (支持): 支持"aac"、"aiff"、"mp3"、"mid"、"wav"、"amr"等格式文件。
暂不支持播放网络路径音频。

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Audio Example</title>
<script type="text/javascript">
// 扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener( "plusready", onPlusReady, false );
// 扩展API加载完毕,现在可以正常调用扩展API
function onPlusReady() {
}
var p = null;
function startPlay() {
if ( plus.audio == undefined ) {
alert( "Device not ready!" );
}
p = plus.audio.createPlayer( "_Doc/Audio/test.mp3" );
p.play( function () {
alert( "Audio play success!" );
}, function ( e ) {
alert( "Audio play error: " + e.message );
} );
}
function stopPlay() {
p.stop();
}
</script>
</head>
<body>
<input type="button" value="Start Play" onclick="startPlay();"/>
<br/>
<input type="button" value="Stop Play" onclick="stopPlay();"/>
</body>
</html>

3、对象:

3.1、AudioRecorder: 录音对象

interface AudioRecorder {

readonly attribute String[] supportedSamplerates;

readonly attribute String[] supportedFormats;

function record( option, successCB, errorCB );

function stop();

}

1、属性

   supportedSamplerates: 数组,设备录音支持的采用率,属性类型为Array(String),若不支持此属性则返回空数组对象。支持的录音采样率,字符串格式为“采样频率”,如“8000”;其单位为Hz。

   supportedFormats: 数组,设备录音支持的文件格式,属性类型为Array(String),若不支持此属性则返回空数组对象。支持的录音文件的格式,字符串格式为文件格式后缀名,如"mp3"、"aac"、"wav"等。

2、方法

(1)、record: 调用设备麦克风进行录音操作

       void recorder.record( option, successCB, errorCB );

说明:调用设备麦克风开始录音操作,录音完成需调用stop方法停止。录音完成后将通过successCB回调返回录音后的文件数据。

参数:

option: ( RecordOption
) 必选 设置录音的参数

successCB: (
RecordSuccessCallback
) 必选 录音操作成功回调函数

errorCB: ( AudioErrorCallback
) 可选 录音操作错误回调函数

返回值:void : 无

示例:

// 录音操作

var r = plus.audio.getRecorder();
r.record( {filename:"_doc/audio/"}, function () {
alert( "Audio record success!" );
}, function ( e ) {
alert( "Audio record failed: " + e.message );
} );
(2)、stop: 结束录音操作

               void recorder.stop();

说明:结束录音操作,通知设备完成录音操作。录音完成后将调用record方法中传入的successCB回调返回录音文件

返回值:void : 无

示例:

// 录音操作

var r = plus.audio.getRecorder();
r.record( {filename:"_doc/audio/"}, function () {
alert( "Audio record success!" );
}, function ( e ) {
alert( "Audio record failed: " + e.message );
} );
//.....
// 停止录音
r.stop();

3.2、AudioPlayer: 音频播放对象

interface AudioPlayer {

function void play( successCB, errorCB );

function void pause();

function void resume();

function void stop();

function void seekTo( position );

function Number getDuration();

function Number getPosition();

function void setRoute( route );

}

说明:音频播放对象,用于音频文件的播放。不能通过new方法直接创建,只能通过audio.createPlayer方法创建。

1、方法

(1)、play: 开始播放音频

          void player.play( successCB, errorCB );

参数:

successCB: (
PlaySuccessCallback
) 必选 播放音频操作成功回调函数,当音频文件播放完成时回调。

errorCB: ( AudioErrorCallback
) 可选 播放音频操作错误回调函数,当音频文件播放发生错误时回调。

返回值:void : 无

示例:

// 播放操作
var p = plus.audio.createPlayer();
p.play( function () {
alert( "Audio play success!" );
}, function ( e ) {
alert( "Audio play failed: " + e.message );
} );

(2)、pause: 暂停播放音频

        void player.pause();

说明:需先调用createPlayer方法创建音频播放对象,并开始播放。音频播放对象在播放状态才能暂停,在其它状态调用此方法无任何作用。

返回值:void : 无

示例:

// 播放操作
var p = plus.audio.createPlayer();
p.play( function () {
alert( "Audio play success!" );
}, function ( e ) {
alert( "Audio play failed: " + e.message );
} );
// ......
// 暂停播放
p.pause();

(3)、resume: 恢复播放音频

            void player.resume();

说明:音频播放对象在暂停状态才能恢复播放,在其它状态调用此方法无任何作用。

返回值:void : 无

示例:

// 播放操作
var p = plus.audio.createPlayer();
p.play( function () {
alert( "Audio play success!" );
}, function ( e ) {
alert( "Audio play failed: " + e.message );
} );
// ......
// 暂停播放
p.pause();
// ......
// 恢复播放
p.resume();

(4)、stop: 停止播放音频

             void player.stop();

说明:停止播放音频,音频播放对象在播放或暂停状态才能停止播放,在其它状态调用此方法无任何作用。 停止播放后如果需要继续播放,则需调用play方法重新开始播放。

返回值:void : 无

示例:

// 播放操作
var p = plus.audio.createPlayer();
p.play( function () {
alert( "Audio play success!" );
}, function ( e ) {
alert( "Audio play failed: " + e.message );
} );
// ......
// 停止播放
p.stop();

(5)、seekTo: 跳到指定位置播放音频

         void player.seekTo( position );

说明:跳到指定位置播放音频,音频播放对象在播放或暂停状态才能跳到指定播放音频,在其它状态调用此方法无任何作用。

参数:position: ( Number ) 必选 音频播放要跳到的位置,单位为s

返回值:void : 无

(6)、getDuration: 获取音频流的总长度

        Number player.getDuration();

说明:获取音频流的总长度,单位为秒,若长度未知则返回-1。如果还未获取到音频流信息则返回NaN,此时需要延迟获取此信息。

返回值:Number : 音频流的总长度

(7)、getPosition: 获取音频流当前播放的位置

         Number player.getPosition();

说明:获取音频流当前播放的位置(已播放的长度),单位为s。

返回值:Number : 当前音频播放的位置,单位为s,如果音频文件未准备好则返回0。

(8)、setRoute: 设置音频输出线路

          void player.setRoute( route );

说明:可在音频文件开始播放前或播放的过程中改变音频输出线路,默认使用扬声器(plus.audio.ROUTE_SPEAKER)输出线路。

参数:route: ( Number ) 必选 音频播放时输出线路常量,可设置audio的ROUTE_*常量值,设置后立即生效。

返回值:void : 无

示例:

// 播放操作
var p = plus.audio.createPlayer();
// 切换到听筒线路
p.setRoute( plus.audio.ROUTE_EARPIECE );
p.play( function () {
alert( "Audio play success!" );
}, function ( e ) {
alert( "Audio play failed: " + e.message );
} );
//...
// 切换到扬声器线路
p.setRoute( plus.audio.ROUTE_SPEAKER );

3.3、RecordOption: JSON对象,调用麦克风设备进行录音的参数

JSON对象,调用麦克风设备进行录音的参数

属性:

   filename: (String 类型 )保存录音文件的路径,可设置具体文件名,也可只设置路径,如果以“/”结尾则表明是路径,文件名由录音程序自动生成。 如未设置则使用默认目录生成随机文件名称,默认目录为应用%APPID%下的documents目录。

   samplerate: (String 类型 )录音文件的采样率,需通过supportedSamplerates属性获取设备支持的采样率,若设置无效的值,则使用系统默认的采样率。

   format: (String 类型 )录音文件的格式,需通过supportedFormats属性获取设备支持的录音格式,若设置无效的值,则使用系统默认的录音格式。平台支持:Android - 2.2+ (支持):
Android平台支持"amr"、"3gp"格式,默认为"amr"。iOS
- 4.5+ (支持): iOS平台支持"wav"、"aac"、"amr"格式,默认为"wav"。

4、回调方法:

4.1、RecordSuccessCallback: 录音操作成功回调

void onSuccess( recordFile ) {
// Get record file code.
}
说明:麦克风录音操作成功的回调函数,在录音操作完成调用stop()方法时调用。

参数:recordFile: ( String ) 必选
录音操作保存的音频文件路径

返回值:void : 无

4.2、PlaySuccessCallback: 播放音频文件操作成功回调

void onCompleted() {
// Play audio file completed code.
}
说明:麦克风录音操作成功的回调函数,在录音操作完成调用stop()方法时调用。 

返回值:void : 无

4.3、AudioErrorCallback: 音频操作失败回调

void onError( error ) {
// Handle audio error
}
参数:error: ( DOMException ) 必选 音频操作的错误信息

返回值:void : 无

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: