Skip to content

Commit

Permalink
用umd包裹一层支持import/require,提交npm
Browse files Browse the repository at this point in the history
  • Loading branch information
xiangyuecn committed Dec 1, 2019
1 parent 93f9450 commit fef31a5
Show file tree
Hide file tree
Showing 12 changed files with 363 additions and 29 deletions.
32 changes: 28 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@ mp3使用lamejs编码(CBR),压缩后的recorder.mp3.min.js文件150kb左右(
# :open_book:快速使用

## 【1】加载框架
在需要录音功能的页面引入压缩好的recorder.xxx.min.js文件即可 (**注意:[需要在https等安全环境下才能进行录音](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia#Privacy_and_security)**

注意:[需要在https等安全环境下才能进行录音](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia#Privacy_and_security)

**方式一**:使用script标签引入

在需要录音功能的页面引入压缩好的recorder.xxx.min.js文件即可
``` html
<script src="recorder.mp3.min.js"></script> <!--已包含recorder-core和mp3格式支持-->
```
Expand All @@ -26,11 +31,28 @@ mp3使用lamejs编码(CBR),压缩后的recorder.mp3.min.js文件150kb左右(
<script src="src/recorder-core.js"></script> <!--必须引入的录音核心-->
<script src="src/engine/mp3.js"></script> <!--相应格式支持文件-->
<script src="src/engine/mp3-engine.js"></script> <!--如果此格式有额外的编码引擎的话,也要加上-->

<script src="src/extensions/waveview.js"></script> <!--可选的扩展支持项-->
```

**方式二**:通过import/require引入

通过npm进行安装 `npm install recorder-core` ,如果直接clone的源码下面文件路径调整一下即可 [](?Ref=ImportCode&Start)
``` javascript
//必须引入的核心,换成require也是一样的。注意:recorder-core会自动往window下挂载名称为Recorder对象,全局可调用window.Recorder,也许可自行调整相关源码清除全局污染
import Recorder from 'recorder-core'

//需要使用到的音频格式编码引擎的js文件统统加载进来
import 'recorder-core/src/engine/mp3'
import 'recorder-core/src/engine/mp3-engine'

//可选的扩展支持项
import 'recorder-core/src/extensions/waveview'
```
> 可自行用 `AMD/CommonJS` 写法把 `Recorder` 函数(把格式支持文件合并过来)进行导出;或者尝试直接 `import/require` `recorder.mp3.min.js`,应该可以通过全局`window.Recorder`访问,简单粗暴。vue?! angular?!可用??!!,[webpack使用](https://github.com/xiangyuecn/Recorder/issues/38)
[](?RefEnd)

## 【2】调用录音
然后使用,假设立即运行,只录3秒,[运行此代码>>](https://xiangyuecn.github.io/Recorder/assets/%E5%B7%A5%E5%85%B7-%E4%BB%A3%E7%A0%81%E8%BF%90%E8%A1%8C%E5%92%8C%E9%9D%99%E6%80%81%E5%88%86%E5%8F%91Runtime.html?idf=self_base_demo)
[](?Ref=Codes&Start)然后使用,假设立即运行,只录3秒,[运行此代码>>](https://xiangyuecn.github.io/Recorder/assets/%E5%B7%A5%E5%85%B7-%E4%BB%A3%E7%A0%81%E8%BF%90%E8%A1%8C%E5%92%8C%E9%9D%99%E6%80%81%E5%88%86%E5%8F%91Runtime.html?idf=self_base_demo)
``` javascript
//简单控制台直接测试方法:在任意(无CSP限制)页面内加载Recorder,加载成功后再执行一次本代码立即会有效果,import("https://xiangyuecn.github.io/Recorder/recorder.mp3.min.js").then(function(s){console.log("import ok")}).catch(function(e){console.error("import fail",e)})

Expand Down Expand Up @@ -162,6 +184,7 @@ $.ajax({
//-----↑↑↑以上才是主要代码↑↑↑-------
},function(msg){console.log("录音失败:"+msg);});},3000);},function(msg){console.log("无法录音:"+msg);});
```
[](?RefEnd)

## 【附】问题排查
- 打开[Demo页面](https://xiangyuecn.github.io/Recorder/)试试看,是不是也有同样的问题。
Expand Down Expand Up @@ -500,7 +523,7 @@ Recorder({type:"aac"})
## `WaveView`扩展
`waveview.js`,4kb大小源码,录音时动态显示波形,具体样子参考演示地址页面。此扩展参考[MCVoiceWave](https://github.com/HaloMartin/MCVoiceWave)库编写的,具体代码在`https://github.com/HaloMartin/MCVoiceWave/blob/f6dc28975fbe0f7fc6cc4dbc2e61b0aa5574e9bc/MCVoiceWave/MCVoiceWaveView.m`中。

此扩展是在录音时`onProcess`回调中使用;`Recorder.BufferSize`会影响绘制帧率,越小越流畅(但越消耗cpu),默认配置的大概12帧/s。基础使用方法:
此扩展是在录音时`onProcess`回调中使用;`Recorder.BufferSize`会影响绘制帧率,越小越流畅(但越消耗cpu),默认配置的大概12帧/s。基础使用方法:[](?Ref=WaveView.Codes&Start)
``` javascript
var wave;
var rec=Recorder({
Expand All @@ -516,6 +539,7 @@ rec.open(function(){
```

![](https://gitee.com/xiangyuecn/Recorder/raw/master/assets/use_wave.png)
[](?RefEnd)

### 【构造】wave=Recorder.WaveView(set)
构造函数,`set`参数为配置对象,默认配置值如下:
Expand Down
39 changes: 38 additions & 1 deletion app-support-sample/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@
# :open_book:快速使用

## 【1】加载框架

**方式一**:使用script标签引入

``` html
<!-- 可选的独立配置文件,提供这些文件时可免去修改app.js源码。
注意:使用时应该使用自己编写的文件,而不是使用这个参考用的文件 -->
Expand All @@ -50,8 +53,41 @@
<script src="src/app-support/app.js"></script>
```

**方式二**:通过import/require引入

通过npm进行安装 `npm install recorder-core` ,如果直接clone的源码下面文件路径调整一下即可 [](?Ref=ImportCode&Start)
``` javascript
/********先加载RecordApp需要用到的支持文件*********/
//必须引入的app核心文件,换成require也是一样的。注意:app.js会自动往window下挂载名称为RecordApp对象,全局可调用window.RecordApp,也许可自行调整相关源码清除全局污染
import RecordApp from 'recorder-core/src/app-support/app'
//可选开启Native支持,需要引入此文件
import 'recorder-core/src/app-support/app-native-support'
//可选开启IOS上微信录音支持,需要引入此文件
import 'recorder-core/src/app-support/app-ios-weixin-support'

//这里放置可选的独立配置文件,提供这些文件时可免去修改app.js源码。这些配置文件需要自己编写,参考https://github.com/xiangyuecn/Recorder/tree/master/app-support-sample 目录内的这两个配置文件代码。
//import '你的配置文件目录/native-config.js' //可选开启native支持的相关配置
//import '你的配置文件目录/ios-weixin-config.js' //可选开启ios weixin支持的相关配置

/*********然后加载Recorder需要的文件***********/
//必须引入的核心。所有文件都需要自行引入,否则app.js会尝试用script来请求需要的这些文件,进而导致错误,引入后会检测到组件已自动加载,就不会去请求了
import 'recorder-core'

//需要使用到的音频格式编码引擎的js文件统统加载进来
import 'recorder-core/src/engine/mp3'
import 'recorder-core/src/engine/mp3-engine'

//由于大部分情况下ios-weixin的支持需要用到amr解码器,应当把amr引擎也加载进来
import 'recorder-core/src/engine/beta-amr'
import 'recorder-core/src/engine/beta-amr-engine'

//可选的扩展支持项
import 'recorder-core/src/extensions/waveview'
```
[](?RefEnd)

## 【2】调用录音
然后使用,假设立即运行,只录3秒,会自动根据环境使用Native录音、微信JsSDK录音、H5录音
[](?Ref=Codes&Start)然后使用,假设立即运行,只录3秒,会自动根据环境使用Native录音、微信JsSDK录音、H5录音
``` javascript
//var dialog=createDelayDialog(); 开启可选的弹框伪代码,需先于权限请求前执行,因为回调不确定是同步还是异步的
//请求录音权限
Expand Down Expand Up @@ -100,6 +136,7 @@ function createDelayDialog(){
};
*/
```
[](?RefEnd)

## 【附】录音立即播放、上传示例
参考[Recorder](https://github.com/xiangyuecn/Recorder)中的示例。
Expand Down
83 changes: 83 additions & 0 deletions assets/npm-home/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Recorder:recorder-core 用于html5录音

GitHub: [https://github.com/xiangyuecn/Recorder](https://github.com/xiangyuecn/Recorder),详细使用方法和支持请参考Recorder的GitHub仓库。

npm recorder这个名字已被使用,因此在Recorder基础上增加后缀-core,就命名为recorder-core,和Recorder核心文件同名。

@@Ref 编辑提醒@@
@@Ref 编辑提醒@@
@@Ref 编辑提醒@@


# 如何使用

**注意:[需要在https等安全环境下才能进行录音](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia#Privacy_and_security)**

## 【1】通过npm安装
```
npm install recorder-core
```

## 【2】引入Recorder库
**方式一**:通过import/require引入

@@Ref README.ImportCode@@

**方式二**:使用script标签引入

这种方式和GitHub上的代码使用没有差别,请阅读[GitHub仓库](https://github.com/xiangyuecn/Recorder)获得更详细的使用文档。
``` html
<script src="你项目中的路径/recorder-core.js"></script> <!--必须引入的录音核心-->
<script src="你项目中的路径/engine/mp3.js"></script> <!--相应格式支持文件-->
<script src="你项目中的路径/engine/mp3-engine.js"></script> <!--如果此格式有额外的编码引擎的话,也要加上-->

<script src="你项目中的路径/extensions/waveview.js"></script> <!--可选的扩展支持项-->
```

## 【3】调用录音
@@Ref README.Codes@@


## WaveView的调用方式
直接通过Recorder.WaveView调用即可,详细的使用请参考[GitHub仓库](https://github.com/xiangyuecn/Recorder)里面的README

@@Ref README.WaveView.Codes@@


## RecordApp的调用方式
**方式一**:通过import/require引入

@@Ref RecordApp.README.ImportCode@@

**方式二**:使用script标签引入

这种方式和GitHub上的代码使用没有差别,请阅读[GitHub仓库内RecordApp](https://github.com/xiangyuecn/Recorder/tree/master/app-support-sample)获得更详细的使用文档。
``` html
<!-- 可选的独立配置文件,参考上面import的解释 -->
<script src="你的配置文件目录/native-config.js"></script>
<script src="你的配置文件目录/ios-weixin-config.js"></script>

<!-- 在需要录音功能的页面引入`app-support/app.js`文件即可。
app.js会自动加载Recorder和编码引擎文件,应确保app.js内BaseFolder目录的正确性。
(压缩时可以把所有支持文件压缩到一起,会检测到组件已自动加载)
(**注意:需要在https等安全环境下才能进行录音**) -->
<script src="你项目中的路径/app-support/app.js"></script>
```

### 调用录音
@@Ref RecordApp.README.Codes@@


--------
> 以下文档为GitHub仓库内的README原文,可能更新不及时,请到[GitHub仓库](https://github.com/xiangyuecn/Recorder)内查看最新文档
@@Ref README.Raw@@


@@Remove Start@@
# 作者自用:本npm包如何编写提交

1. 运行根目录/src:npm start,进行文件copy
2. 进入assets/npm-home/npm-files目录,进行提交

@@Remove End@@
6 changes: 6 additions & 0 deletions assets/npm-home/hash-history.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[
{
"sha1": "2cdef7c21b86f2bac5d8cafd3ec7b4d170dcfddf",
"time": "2019-12-1 13:37:01"
}
]
26 changes: 26 additions & 0 deletions assets/npm-home/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "recorder-core",
"version": "1.0.123456.9999",
"description": "html5 js 录音 mp3 wav ogg webm amr 格式,支持pc和Android、ios部分浏览器、和Hybrid App(提供Android IOS App源码),微信也是支持的,提供H5版语音通话聊天示例",
"homepage": "https://github.com/xiangyuecn/Recorder",
"main": "src/recorder-core.js",
"keywords": [
"recorder",
"record",
"录音",
"h5录音",
"html5",
"mp3",
"wav",
"recording"
],
"repository": {
"type": "git",
"url": "https://github.com/xiangyuecn/Recorder.git"
},
"bugs": {
"url": "https://github.com/xiangyuecn/Recorder/issues"
},
"author": "xiangyuecn",
"license": "MIT"
}
Loading

0 comments on commit fef31a5

Please sign in to comment.