帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:API  Recorder  记录  音频  OGG  WEB  MP3  Web音频  
.wav/.ogg/.mp3 recorder with Web Audio API

  • 源代码名称:web-audio-recorder-js
  • 源代码网址:http://www.github.com/higuma/web-audio-recorder-js
  • web-audio-recorder-js源代码文档
  • web-audio-recorder-js源代码下载
  • Git URL:
    git://www.github.com/higuma/web-audio-recorder-js.git
  • Git Clone代码到本地:
    git clone http://www.github.com/higuma/web-audio-recorder-js
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/higuma/web-audio-recorder-js
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • WebAudioRecorder.js

    是什么?

    WebAudioRecorder.js 是一个用于记录音频输入( Web音频 API AudioNode对象) 并编码到音频文件图像( Blob对象)的JavaScript库。 它支持三种编码格式。

    • 波形音频(。wav )
    • Ogg Vorbis (。Ogg )
    • MP3 ( mpeg-1 音频层 III ) (。MP3 )

    此库使用以下编码器库作为下层。

    演示

    麦克风录音机演示。

    https://higuma.github.io/web-audio-recorder-js/

    库文件

    库由一个主脚本和几个工作脚本组成。

    lib/ 包含未压缩的库文件。

    • WebAudioRecorder.js: 主脚本
    • WebAudioRecorderWav.js: 波形音频编码器的工作人员
    • WebAudioRecorderOgg.js: Ogg Vorbis编码器的工作人员
    • WebAudioRecorderMp3.js: MP3编码器的工作人员
    • WavAudioEncoder.min.js: 波形音频编码器( 来自 WavAudioEncoder.js )
    • OggVorbisEncoder.min.js: Ogg Vorbis编码器( 来自 OggVorbisEncoder.js )
    • Mp3LameEncoder.min.js: MP3编码器( 来自 Mp3LameEncoder.js )
    • OggVorbisEncoder.min.js.mem: Ogg Vorbis编码器的内存初始化器( 必须位于同一目录中)
    • Mp3LameEncoder.min.js.mem: 用于MP3编码器的内存初始值设定项( 必须位于同一目录中)

    lib-minified/ 包含缩小的库文件。

    • WebAudioRecorder.min.js: 主脚本( 缩小)
    • WebAudioRecorderWav.min.js: 波形音频的工作者( 带有编码器和recompressed的连接)
    • WebAudioRecorderOgg.min.js: Ogg Vorbis的工作者( 带编码器和recompressed的连接)
    • WebAudioRecorderMp3.min.js: MP3工作者( 用编码器和recompressed连接)
    • OggVorbisEncoder.min.js.mem: Ogg Vorbis编码器的内存初始值设定项( 与上述文件相同)
    • Mp3LameEncoder.min.js.mem: MP3编码器( 与avove相同文件)的内存初始值设定项

    使用库

    首先从HTML加载主脚本。

    <scriptsrc="javascripts/WebAudioRecorder.js"></script>

    在创建音频记录器对象( 或者通过 setEncoding() 更改编码) 时加载工作文件。 必须在对象构造函数( 有关详细信息,请参阅API参考) 上设置工作目录。

    audioRecorder =newWebAudioRecorder(sourceNode, {
     workerDir:"javascripts/"// must end with slash});

    API

    构造函数

    recorder =newWebAudioRecorder(sourceNode, configs)

    创建音频录制器对象。

    • 参数
      • sourceNode: 源输入( AudioNode对象)
      • configs: 配置对象
        • .workerDir: 工作文件目录( 默认为 "/" )
        • .numChannels: 通道数( ( 默认值= 2 ( 立体声) )
        • .encoding: 编码( 默认值= "wav",有关详细信息,请参见 .setEncoding() )
        • .options: 选项( 详细信息请参见 .setOptions() )
        • 你还可以设置事件处理程序( 请参见"事件处理程序以获取详细信息
    • 返回
      • 音频录制器对象

    每个配置属性都有一个默认值( 通常,你应该只设置 .workerDir.encoding )。 你可以通过 .setEncoding() 更改编码,也可以在构造后通过 .setOptions() 更改编码。

    如果使用MP3编码,则无法从默认( 当前MP3编码器仅支持 2-channel 立体声) 更改 .numChannels

    实际上,configs 只是深入地复制到记录器对象本身。

    方法

    recorder.setEncoding(encoding)

    构造后更改编码。

    • 参数
      • .encoding: 编码
        • "wav": 波形音频( 默认)
        • "ogg": Ogg Vorbis
        • "mp3": MP3
    • 返回
      • ( 无)

    记录未运行时,你可以更改编码。 如果在录制过程中调用该方法,则激发 .onError() 事件。

    recorder.setOptions(options)

    设置选项。

    • 参数
      • options: 选项对象
        • .timeLimit: 记录时间限制( 第二个) ( 默认为 300 )
        • .encodeAfterRecord: 编码过程模式
          • false: 记录 background 时的进程编码( 缺省)
          • true: 完成录制后的过程编码
        • .progressInterval: 编码进度报告间隔( 毫秒) ( 默认值= 1000 )
          • ( 仅在 .encodeAfterRecordtrue 时使用)
        • .bufferSize: 记录缓冲区大小( ( 默认值= undefined ( 使用浏览器默认值) )
        • .wav.mimeType: 波形音频MIME类型( 默认为 "audio/wav" )
        • .ogg.mimeType: Ogg Vorbis MIME类型( 默认为 "audio/ogg" )
        • .ogg.quality: Ogg Vorbis质量( -0 1 )。 1 ) ( 默认值= 0.5 )
        • .mp3.mimeType: MP3 MIME类型( 默认为 "audio/mpeg" )
        • .mp3.bitRate: MP3比特率( 通常为 64. 320至 44100赫兹( 默认值= 160 )
    • 返回
      • ( 无)

    记录未运行时,你可以设置选项。 如果在录制过程中调用该方法,则激发 .onError() 事件。

    recorder.startRecording()

    启动记录.

    • 参数
      • ( 无)
    • 返回
      • ( 无)

    如果 .encoderAfterRecord 选项是 false ( 默认值),则对记录的背景执行编码过程。

    如果 .encoderAfterRecordtrue,音频数据将存储到worker的缓冲区中。 录制完成后执行编码过程。

    recorder.isRecording()

    记录正在运行时返回。

    • 参数
      • ( 无)
    • 返回
      • false: 记录未运行
      • true: 正在运行记录
    recordingTime =recorder.recordingTime()

    报告记录时间。

    • 参数
      • ( 无)
    • 返回
      • 录制时间( 第二个) 或者 null ( 不录制)
    recorder.cancelRecording()

    取消当前录制而不保存。

    • 参数
      • ( 无)
    • 返回
      • ( 无)
    recorder.finishRecording()

    完成当前录制。

    • 参数
      • ( 无)
    • 返回
      • ( 无)

    如果 .encoderAfterRecord 选项是 false ( 默认值),它将完成编码并立即生成Blob对象。 你会得到一个 .onComplete() 事件。

    如果 .encoderAfterRecordtrue,则开始编码进程。 编码过程可能需要几秒钟到几分钟的时间。 你可以使用 onEncodingProgress() 事件获得编码进度。 获取一个Blob与上面一样。

    recorder.cancelEncoding()

    取消编码。

    • 参数
      • ( 无)
    • 返回
      • ( 无)

    .encoderAfterRecordtrue 时使用这里方法,而worker在 .finishRecording() 后处理编码。 你可以中断工作进程的编码并进行清理。

    在内部,它调用 worker.terminate() 杀死工作进程并使另一。

    事件处理程序

    工作线程的编码器响应由事件处理程序处理。 还提供了一些其他断点作为事件。 事件摘要为 below (。第一个参数总是记录器对象)。

    recorder.onEncoderLoading=function(recorder, encoding) { ... }recorder.onEncoderLoaded=function(recorder, encoding) { ... }recorder.onTimeout=function(recorder) { ... }recorder.onEncodingProgress=function (recorder, progress) { ... }recorder.onEncodingCanceled=function(recorder) { ... }recorder.onComplete=function(recorder, blob) { ... }recorder.onError=function(recorder, message) { ... }

    可以将事件处理程序设置为对象属性。

    recorder =newWebAudioRecorder(source, { workerDir:"javascripts/" });recorder.onComplete=function(rec, blob) {
     // use Blob};

    你还可以从构造函数参数设置事件处理程序。

    recorder =newWebAudioRecorder(source, {
     workerDir:"javascripts/",
     onEncoderLoading:function(recorder, encoding) {
     // show"loading encoder..." display },
     onEncoderLoaded:function(recorder, encoding) {
     // hide"loading encoder..." display }
    });

    事件引用

    recorder.onEncoderLoading=function(recorder, encoding) { ... }
    • 激发于
      • 记录器将加载编码器工作( 在构造或者更改编码)
    • 参数
      • recorder: 音频记录器对象
      • encoding: 编码
    • 默认处理程序
      • 空函数

    这是施工过程中唯一要激发的事件。 要正确捕获第一个事件,应该从构造函数参数( 请参见 上面 示例) 中进行设置。

    recorder.onEncoderLoaded=function(recorder, encoding) { ... }
    • 激发于
      • 编码器工人已经完成加载
    • 参数
      • recorder: 音频记录器对象
      • encoding: 编码
    • 默认处理程序
      • 空函数
    recorder.onTimeout=function(recorder) { ... }
    • 激发于
      • 记录时间超过超时限制
    • 参数
      • recorder: 音频记录器对象
    • 默认处理程序
      • 呼叫 recorder.finishRecording()
    recorder.onEncodingProgress=function (recorder, progress) { ... }
    • 激发于
      • 工作者报告进度( 当 .encodeAfterRecordtrue 时)
    • 参数
      • recorder: 音频记录器对象
      • progress: 进度( 从 01 )
    • 默认处理程序
      • 空函数
    recorder.onEncodingCanceled=function(recorder) { ... }
    • 激发于
      • .cancelRecording() 被称为
    • 参数
      • recorder: 音频记录器对象
    • 默认处理程序
      • 空函数
    recorder.onComplete=function(recorder, blob) { ... }
    • 激发于
      • worker完成对Blob的编码
    • 参数
      • recorder: 音频记录器对象
      • blob: Blob对象
    • 默认处理程序
      • 警告 "You must override onComplete event"recorder.onError()

    这是最重要的事件。 你必须重写才能获得结果。

    recorder.onError=function(recorder, message) { ... }
    • 激发于
      • 错误
    • 参数
      • recorder: 音频记录器对象
      • message: 错误消息
    • 默认处理程序
      • console.log(message) 显示消息

    许可证

    Ogg Vorbis编码器部分使用了 libogglibvorbis的javascript转换代码。 它们是像xiph许可证一样在bsd下发布的。 Ogg Vorbis编码器部分遵循相同的许可证( 请参见下面的链接)。

    http://www.xiph.org/licenses/bsd/

    这个库的MP3编码部分使用了 LAME代码的javascript转换代码。 LAME是在LGPL下许可的。 这里库的MP3编码器部分遵循相同的许可以证( 请参见下面的链接)。

    http://lame.sourceforge.net/about.php

    所有其他部件都是在MIT许可证( 请参见 LICENSE.txt ) 下发布的。



    文章标签:WEB  API  音频  记录  WAV  MP3  Web音频  Recorder  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语