手机上利用downloadFile下载服务器端一个音频文件,代码如下:
wx.downloadFile({ url: 'http://autotest.car580.com/blackmusic.mp3' , success: function (res) { console.log( '背景音乐下载完成' , res) that.setData({ backauto: res.tempFilePath, backautoText: "背景音乐下载完成" }) } }) |
然后使用getBackgroundAudioManager接口播放downloadFile接口所创建的本地临时资源文件(路径),代码如下:
const backgroundAudioManager = wx.getBackgroundAudioManager() |
var that = this backgroundAudioManager.src = that.data.backauto console.log( '播放音乐' , that.data.backauto) |
在PC端开发工具自带模拟器上能正常播放音乐,调试器能看到console.log(
'播放音乐'
, that.data.backauto)
记录的日志。到到了真机上,播放音乐时提示通过如下代码:
backgroundAudioManager.onError((res)=>{ console.log(res) }) |
反馈的结果:
errCode:10001 errMsg:"errCode:500,err:error URL format" src:"wxfile://tmp_a9ilkasiuoqkwerqi9087934795234985234jqjrkjkdfa.mp3" |
之前使用playVoice接口和playBackgroundAudio接口真机上甚至没有反应,不执行接口代码。
并且我录音完成后播放录音的内容,以上提到的接口在真机上都没有反应,无法播放录音文件。
测试真机:vivo X7 Plus,微信目前最新版本6.5.16,基础库版本1.6.0。
能不能文档详细点,不要那么多坑啊?具体有什么解决方案吗?
求官方回答。不要沉默了
我和你一样的需求,一样的代码但是也是无法实现,我的手机型号是小米6,。
希望官方技术能给个方案。
以上代码在开发工具完美执行,没有任何错误。到了真机上就不行行了。同时我也发现开发工具上执行和真机上执行的不同点。
开发工具上,downloadFile接口下载的mp3文件到本地,创建临时文件路径,后缀是mpeg,如下:
http://tmp/wx21b0454e406c6b1b.o6zAJs9LOTfVyToZ8qOdQql2dV-E.351c9423d15078401d16f71e468003c1.mpeg
getBackgroundAudioManager接口能播放,但到了真机上后缀变成了mp3,就不能播放。
提示"errCode:500,err:error URL format"错误。
然后录音接口不论开发工具还是真机,录音完成后回调的临时文件路径后缀都是mp3,开发工具能正常播放录音文件,手机上就不行,提示"errCode:500,err:error URL format"错误。
完成代码如下:
js
//index.js
//获取应用实例
const app = getApp()
const recorderManager = wx.getRecorderManager()
const backgroundAudioManager = wx.getBackgroundAudioManager()
const innerAudioContext = wx.createInnerAudioContext()
const options = {
duration: 600000,
sampleRate: 44100,
numberOfChannels: 1,
encodeBitRate: 192000,
format:
'mp3'
}
recorderManager.onStart(() => {
console.log(
'recorder start'
)
})
recorderManager.onStop((res) => {
console.log(
'recorder stop'
, res)
backgroundAudioManager.stop()
innerAudioContext.src = res.tempFilePath
innerAudioContext.play()
})
backgroundAudioManager.onPlay(()=>{
console.log(
'播放音乐'
)
})
backgroundAudioManager.onError((res)=>{
console.log(res)
})
innerAudioContext.onError((res) => {
console.log(res)
})
innerAudioContext.onPlay(() => {
console.log(
'播放路in个音乐'
)
})
Page({
data: {
autoname:
"测试录音合成背景音乐"
,
backauto:
''
,
backautoText:
''
},
//事件处理函数
default1:
function
(){
var
that =
this
backgroundAudioManager.src = that.data.backauto
//开始录音
recorderManager.start(options);
},
default2:
function
(){
//结束录音
recorderManager.stop()
backgroundAudioManager.stop()
},
default3:
function
(){
var
that =
this
backgroundAudioManager.src = that.data.backauto
console.log(
'播放音乐'
, that.data.backauto)
// wx.playBackgroundAudio({
// dataUrl: that.data.backauto,
// success: function () {
// console.log('播放音乐', that.data.backauto)
// }
// })
},
default4:
function
() {
backgroundAudioManager.stop()
},
onLoad:
function
() {
var
that =
this
if
(wx.createInnerAudioContext && wx.getRecorderManager() && wx.getBackgroundAudioManager()) {
wx.showModal({
title:
'提示'
,
content:
'支持目前最新播放录音组件'
})
}
else
{
//如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
wx.showModal({
title:
'提示'
,
content:
'当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
wx.downloadFile({
url:
'http://autotest.car580.com/blackmusic.mp3'
,
success:
function
(res) {
console.log(
'背景音乐下载完成'
, res)
that.setData({
backauto: res.tempFilePath,
backautoText:
"背景音乐下载完成"
})
}
})
}
})
html
<!--index.wxml-->
<
view
class
=
"container"
>
<
view
class
=
"section"
>
<
view
class
=
"section__title"
>{{backautoText}}</
view
>
<
button
type
=
"default"
size
=
"{{defaultSize}}"
loading
=
"{{loading}}"
plain
=
"{{plain}}"
disabled
=
"{{disabled}}"
bindtap
=
"default1"
hover-class
=
"other-button-hover"
style
=
"margin-bottom:15px;"
> 开始录音 </
button
>
<
button
type
=
"default"
size
=
"{{defaultSize}}"
loading
=
"{{loading}}"
plain
=
"{{plain}}"
disabled
=
"{{disabled}}"
bindtap
=
"default2"
hover-class
=
"other-button-hover"
> 暂停录音 </
button
>
<
button
type
=
"default"
size
=
"{{defaultSize}}"
loading
=
"{{loading}}"
plain
=
"{{plain}}"
disabled
=
"{{disabled}}"
bindtap
=
"default3"
hover-class
=
"other-button-hover"
> 播放音乐 </
button
>
<
button
type
=
"default"
size
=
"{{defaultSize}}"
loading
=
"{{loading}}"
plain
=
"{{plain}}"
disabled
=
"{{disabled}}"
bindtap
=
"default4"
hover-class
=
"other-button-hover"
> 停止播放 </
button
>
</
view
>
</
view
>