微信小程序-录音文件无法播放问题

微信开发者工具录音问题

使用微信小程序开发者工具录制声音想看看声音质量如何,img

找到其所在目录,类似于下面这样:

  • C:\Users\study\AppData\Local\微信开发者工具\User Data\19f15250c2209a5aea2564e315f41723\WeappSimulator\WeappFileSystem\o6zAJs6fHsuYVMffU7XVspWDZ89g\touristappid\tmp

文件倒是找到了,但这种文件没有办法用一般的播放器播放。
img

比如vlc media player, foobar2000, QQ音乐,包括audition也没办法播放,怪的是Groove, Windows Media Player倒是可以播放。
img

我专门用浏览器测试了下,发现chrome浏览器是可以正常播放的!
img

但IE11不行!
img

搜索后研究吧,发现微信小程序录制的声音其实和一般的录音有点儿不同,录音文件为silk格式,说是silk其实是base64加密后的webm格式。使用MediaInfo查看:
image-20210728163843727

文件肯定是需要用的,尤其是我还需要使用auditon加工,所以必须要解决,方法有二。

ffmpeg转换后使用

非常简单:

ffmpeg -i 微信小程序录制的文件名.aac 转换后的音频文件名.mp3

实例如下:

ffmpeg -i test.aac test.mp3
ffmpeg version git-2020-01-31-62d92a8 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20200122
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 38.100 / 56. 38.100
  libavcodec     58. 67.100 / 58. 67.100
  libavformat    58. 37.100 / 58. 37.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 72.100 /  7. 72.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, matroska,webm, from 'test.aac':
  Metadata:
    encoder         : Chrome
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
Stream mapping:
  Stream #0:0 -> #0:0 (opus (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
Output #0, mp3, to 'test.mp3':
  Metadata:
    TSSE            : Lavf58.37.100
    Stream #0:0(eng): Audio: mp3 (libmp3lame), 48000 Hz, mono, fltp (default)
    Metadata:
      encoder         : Lavc58.67.100 libmp3lame
size=      32kB time=00:00:04.03 bitrate=  64.8kbits/s speed= 102x
video:0kB audio:32kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.730399%

从input里面可以看出,#0, matroska,webm, from ‘test.aac’,说明微信小程序开发工具录制时其编码器用的是chrome的。

转换之后,一切正常,audtion能够正常打开。

img

真机录音

还有个办法就是用真机录制文件,编码器用的是手机内置的而不是chrome,能够正常播放!

本文所用微信小程序开发版本为: 1.05.2107221

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是微信小程序云开发录音播放页面的代码示例: index.wxml: ```html <!-- 录音按钮 --> <button bindtouchstart="startRecord" bindtouchend="stopRecord">按住录音</button> <!-- 播放录音按钮 --> <button bindtap="playRecord">播放录音</button> ``` index.js: ```javascript const recorderManager = wx.getRecorderManager() const innerAudioContext = wx.createInnerAudioContext() Page({ data: { tempFilePath: '' }, // 开始录音 startRecord() { recorderManager.start({ format: 'mp3' }) }, // 停止录音 stopRecord() { recorderManager.stop() recorderManager.onStop(res => { console.log('录音文件路径:', res.tempFilePath) this.setData({ tempFilePath: res.tempFilePath }) }) }, // 播放录音 playRecord() { innerAudioContext.src = this.data.tempFilePath innerAudioContext.play() } }) ``` 在上述代码中,我们首先使用 `wx.getRecorderManager()` 获取录音管理器,并使用 `recorderManager.start()` 开始录音,使用 `recorderManager.stop()` 停止录音,并在 `recorderManager.onStop()` 中获取录音文件的路径。 接着,我们使用 `wx.createInnerAudioContext()` 创建一个内部音频播放器,并使用 `innerAudioContext.play()` 播放录音文件。 需要注意的是,由于涉及到录音播放,需要在小程序的 `app.json` 文件中设置相应的权限: ```json { "permission": { "scope.record": { "desc": "用于录音" }, "scope.writePhotosAlbum": { "desc": "用于保存录音文件" } } } ``` 同时,还需要在小程序的云开发控制台中开通云存储服务,并在 `project.config.json` 文件中添加以下配置: ```json { "cloudfunctionRoot": "./functions", "setting": { "urlCheck": true, "es6": true, "postcss": true, "preloadBackgroundData": false, "minified": true, "newFeature": true, "coverView": true, "nodeModules": true, "autoAudits": false, "useMultiFrameRuntime": true, "enablePullDownRefresh": true, "enableShareAppMessage": true, "enableShareTimeline": true, "enablePageScroll": true, "enablePageReachBottom": true, "enablePageShare": true }, "packOptions": { "ignore": [] }, "compileType": "miniprogram", "appid": "your appid", "projectname": "your project name", "miniprogramRoot": "./" } ``` 以上代码中的 `your appid` 和 `your project name` 需要替换为真实的小程序 appid 和项目名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱玩的安哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值