# .start
### RecorderManager.start(Object object)
开始录音
#### 参数
##### Object object
属性类型默认值是否必填说明支持版本durationnumber60000否录音的时长,单位 ms,最大值 600000(10 分钟)sampleRatenumber8000否采样率numberOfChannelsnumber2否录音通道数encodeBitRatenumber48000否编码码率,有效值见下表格formatstringaac否音频格式frameSizenumber否指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。audioSourcestringauto否指定录音的音频输入源,可通过 [wx.getAvailableAudioSources()](/read/wechat-game-api/98.md) 获取当前可用的音频源>= 2.1.0**object.sampleRate 的合法值**
值说明80008000 采样率1102511025 采样率1200012000 采样率1600016000 采样率2205022050 采样率2400024000 采样率3200032000 采样率4410044100 采样率4800048000 采样率**object.numberOfChannels 的合法值**
值说明11 个通道22 个通道**object.format 的合法值**
值说明mp3mp3 格式aacaac 格式**object.audioSource 的合法值**
值说明auto自动设置,默认使用手机麦克风,插上耳麦后自动切换使用耳机麦克风,所有平台适用buildInMic手机麦克风,仅限 iOSheadsetMic耳机麦克风,仅限 iOSmic麦克风(没插耳麦时是手机麦克风,插耳麦时是耳机麦克风),仅限 Androidcamcorder同 mic,适用于录制音视频内容,仅限 Androidvoice\_communication同 mic,适用于实时沟通,仅限 Androidvoice\_recognition同 mic,适用于语音识别,仅限 Android#### 采样率与编码码率限制
每种采样率有对应的编码码率范围有效值,设置不合法的采样率或编码码率会导致录音失败,具体对应关系如下表。
采样率编码码率800016000 ~ 480001102516000 ~ 480001200024000 ~ 640001600024000 ~ 960002205032000 ~ 1280002400032000 ~ 1280003200048000 ~ 1920004410064000 ~ 3200004800064000 ~ 320000#### 示例代码
```
<pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="kwd">const</span><span class="pln"> recorderManager </span><span class="pun">=</span><span class="pln"> wx</span><span class="pun">.</span><span class="pln">getRecorderManager</span><span class="pun">()</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln">recorderManager</span><span class="pun">.</span><span class="pln">onStart</span><span class="pun">(</span><span class="hljs-params"><span class="pun">()</span></span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="pun">{</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'recorder start'</span><span class="pun">)</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pun">})</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln">recorderManager</span><span class="pun">.</span><span class="pln">onPause</span><span class="pun">(</span><span class="hljs-params"><span class="pun">()</span></span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="pun">{</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'recorder pause'</span><span class="pun">)</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pun">})</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln">recorderManager</span><span class="pun">.</span><span class="pln">onStop</span><span class="pun">((</span><span class="hljs-params"><span class="pln">res</span></span><span class="pun">)</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="pun">{</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'recorder stop'</span><span class="pun">,</span><span class="pln"> res</span><span class="pun">)</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> </span><span class="kwd">const</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> tempFilePath </span><span class="pun">}</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> res</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pun">})</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln">recorderManager</span><span class="pun">.</span><span class="pln">onFrameRecorded</span><span class="pun">((</span><span class="hljs-params"><span class="pln">res</span></span><span class="pun">)</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="pun">{</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> </span><span class="kwd">const</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> frameBuffer </span><span class="pun">}</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> res</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">'frameBuffer.byteLength'</span><span class="pun">,</span><span class="pln"> frameBuffer</span><span class="pun">.</span><span class="pln">byteLength</span><span class="pun">)</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pun">})</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="kwd">const</span><span class="pln"> options </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10000</span><span class="pun">,</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> sampleRate</span><span class="pun">:</span><span class="pln"> </span><span class="lit">44100</span><span class="pun">,</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> numberOfChannels</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> encodeBitRate</span><span class="pun">:</span><span class="pln"> </span><span class="lit">192000</span><span class="pun">,</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> format</span><span class="pun">:</span><span class="pln"> </span><span class="str">'aac'</span><span class="pun">,</span></code></li>
<li class="l1"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pln"> frameSize</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span></code></li>
<li class="l"><code class="pcalibre9 pcalibre8 pcalibre7"><span class="pun">}</span></code></li>
</ol>
```
recorderManager.start(options)
> 原文: <https://developers.weixin.qq.com/minigame/dev/api/media/recorder/RecorderManager.start.html>
- 致谢
- 渲染
- 画布
- wx.createCanvas
- Canvas
- .toTempFilePath
- .toTempFilePathSync
- .getContext
- .toDataURL
- RenderingContext
- 图片
- wx.createImage
- Image
- 字体
- wx.getTextLineHeight
- wx.loadFont
- 帧率
- wx.setPreferredFramesPerSecond
- cancelAnimationFrame
- requestAnimationFrame
- 分包加载
- wx.loadSubpackage
- LoadSubpackageTask
- .onProgressUpdate
- 设备
- 设备方向
- wx.startDeviceMotionListening
- wx.stopDeviceMotionListening
- wx.onDeviceMotionChange
- 加速计
- wx.startAccelerometer
- wx.stopAccelerometer
- wx.onAccelerometerChange
- 剪贴板
- wx.getClipboardData
- wx.setClipboardData
- 罗盘
- wx.startCompass
- wx.stopCompass
- wx.onCompassChange
- 陀螺仪
- wx.startGyroscope
- wx.stopGyroscope
- wx.onGyroscopeChange
- 电量
- wx.getBatteryInfo
- wx.getBatteryInfoSync
- 网络
- wx.getNetworkType
- wx.onNetworkStatusChange
- 振动
- wx.vibrateShort
- wx.vibrateLong
- 性能
- wx.onMemoryWarning
- 屏幕
- wx.getScreenBrightness
- wx.setKeepScreenOn
- wx.setScreenBrightness
- 转屏
- wx.onDeviceOrientationChange
- wx.offDeviceOrientationChange
- 系统
- 系统信息
- wx.getSystemInfo
- wx.getSystemInfoSync
- 系统事件
- wx.onAudioInterruptionBegin
- wx.offAudioInterruptionBegin
- wx.onAudioInterruptionEnd
- wx.offAudioInterruptionEnd
- wx.onError
- wx.offError
- 生命周期
- wx.exitMiniProgram
- wx.getLaunchOptionsSync
- wx.onHide
- wx.offHide
- wx.onShow
- wx.offShow
- 触摸事件
- wx.onTouchStart
- wx.offTouchStart
- wx.onTouchMove
- wx.offTouchMove
- wx.onTouchEnd
- wx.offTouchEnd
- wx.onTouchCancel
- wx.offTouchCancel
- Touch
- 位置
- wx.getLocation
- 媒体
- 图片
- wx.chooseImage
- wx.previewImage
- wx.saveImageToPhotosAlbum
- 音频
- wx.createInnerAudioContext
- wx.getAvailableAudioSources
- wx.setInnerAudioOption
- InnerAudioContext
- .pause
- .stop
- .seek
- .destroy
- .offCanplay
- .onPlay
- .offPlay
- .onPause
- .offPause
- .onStop
- .offStop
- .onEnded
- .offEnded
- .onTimeUpdate
- .offTimeUpdate
- .onError
- .onCanplay
- .offError
- .onWaiting
- .offWaiting
- .onSeeking
- .offSeeking
- .onSeeked
- .offSeeked
- .play
- 录音
- wx.getRecorderManager
- RecorderManager
- .start
- .pause
- .resume
- .stop
- .onStart
- .onResume
- .onPause
- .onStop
- .onFrameRecorded
- .onError
- .onInterruptionBegin
- .onInterruptionEnd
- 视频
- wx.createVideo
- Video
- .onWaiting
- .offWaiting
- .onPlay
- .offPlay
- .onPause
- .offPause
- .onEnded
- .offEnded
- .onTimeUpdate
- .offTimeUpdate
- .onError
- .offError
- .destroy
- .play
- .pause
- .stop
- .seek
- .requestFullScreen
- .exitFullScreen
- 文件
- wx.getFileSystemManager
- FileSystemManager
- .access
- .accessSync
- .appendFile
- .appendFileSync
- .saveFile
- .saveFileSync
- .getSavedFileList
- .removeSavedFile
- .copyFile
- .copyFileSync
- .getFileInfo
- .mkdir
- .mkdirSync
- .readFile
- .readFileSync
- .readdir
- .readdirSync
- .rename
- .renameSync
- .rmdir
- .rmdirSync
- .stat
- .statSync
- .unlink
- .unlinkSync
- .unzip
- .writeFile
- .writeFileSync
- Stats
- .isDirectory
- .isFile
- 网络
- 下载
- wx.downloadFile
- DownloadTask
- .onProgressUpdate
- .abort
- 发起请求
- wx.request
- RequestTask
- .abort
- WebSocket
- wx.connectSocket
- wx.closeSocket
- wx.sendSocketMessage
- wx.onSocketOpen
- wx.onSocketClose
- wx.onSocketMessage
- wx.onSocketError
- SocketTask
- .close
- .onOpen
- .onClose
- .onError
- .onMessage
- .send
- 上传
- wx.uploadFile
- UploadTask
- .onProgressUpdate
- .abort
- 开放接口
- 游戏圈
- wx.createGameClubButton
- GameClubButton
- .onTap
- .offTap
- .show
- .hide
- .destroy
- 开放数据
- wx.getFriendCloudStorage
- wx.getGroupCloudStorage
- wx.getUserCloudStorage
- wx.removeUserCloudStorage
- wx.setUserCloudStorage
- wx.getSharedCanvas
- UserGameData
- KVData
- removeUserStorage
- setUserStorage
- 授权
- wx.authorize
- 防沉迷
- wx.checkIsUserAdvisedToRest
- 用户信息
- wx.getUserInfo
- wx.createUserInfoButton
- UserInfo
- UserInfoButton
- .show
- .hide
- .destroy
- .onTap
- .offTap
- 微信运动
- wx.getWeRunData
- 设置
- wx.getSetting
- wx.openSetting
- wx.createOpenSettingButton
- OpenSettingButton
- .onTap
- .offTap
- .show
- .hide
- .destroy
- AuthSetting
- 登录
- wx.login
- wx.checkSession
- checkSessionKey
- code2Session
- 意见反馈
- wx.createFeedbackButton
- FeedbackButton
- .onTap
- .offTap
- .show
- .hide
- .destroy
- 小程序跳转
- wx.navigateToMiniProgram
- 客服消息
- wx.openCustomerServiceConversation
- 开放数据域
- wx.getOpenDataContext
- wx.onMessage
- OpenDataContext
- .postMessage
- 接口调用凭证
- getAccessToken
- 内容安全
- imgSecCheck
- msgSecCheck
- 二维码
- createWXAQRCode
- getWXACode
- getWXACodeUnlimit
- 调试
- wx.setEnableDebug
- console
- .groupEnd
- .debug
- .log
- .info
- .warn
- .error
- .group
- 数据缓存
- wx.getStorage
- wx.getStorageSync
- wx.setStorage
- wx.setStorageSync
- wx.removeStorage
- wx.removeStorageSync
- wx.clearStorage
- wx.clearStorageSync
- wx.getStorageInfo
- wx.getStorageInfoSync
- 更新
- wx.getUpdateManager
- UpdateManager
- .onCheckForUpdate
- .onUpdateReady
- .onUpdateFailed
- .applyUpdate
- Worker
- wx.createWorker
- Worker
- .postMessage
- .onMessage
- .terminate
- 转发
- wx.getShareInfo
- wx.hideShareMenu
- wx.showShareMenu
- wx.updateShareMenu
- wx.shareAppMessage
- wx.onShareAppMessage
- wx.offShareAppMessage
- 广告
- wx.createRewardedVideoAd
- wx.createBannerAd
- RewardedVideoAd
- .load
- .show
- .onLoad
- .offLoad
- .onError
- .offError
- .onClose
- .offClose
- BannerAd
- .show
- .hide
- .destroy
- .onResize
- .offResize
- .onLoad
- .offLoad
- .onError
- .offError
- 界面
- 交互
- wx.showToast
- wx.showModal
- wx.hideToast
- wx.showLoading
- wx.hideLoading
- wx.showActionSheet
- 菜单
- wx.getMenuButtonBoundingClientRect
- wx.setMenuStyle
- 键盘
- wx.showKeyboard
- wx.hideKeyboard
- wx.updateKeyboard
- wx.onKeyboardInput
- wx.offKeyboardInput
- wx.onKeyboardConfirm
- wx.offKeyboardConfirm
- wx.onKeyboardComplete
- wx.offKeyboardComplete
- 状态栏
- wx.setStatusBarStyle
- 窗口
- wx.onWindowResize
- wx.offWindowResize
- 性能
- wx.getPerformance
- wx.triggerGC
- Performance
- .now
- 虚拟支付
- wx.requestMidasPayment
- midasCancelPay
- midasGetBalance
- midasPay
- midasPresent
- 定时器
- setTimeout
- clearTimeout
- setInterval
- clearInterval