wx.createInnerAudioContext 创建组件进行音频播放,在开发工具中没有任何问题,换到手机上就报错,帮忙看看是啥问题呢,谢谢。
大概的代码如下,url会把传入的信息转成wav音频。
play: function (e) { //const audio = wx.createInnerAudioContext(); if (!audio.paused) { audio.stop(); } if ( this .data.src.length == '' ) { this .translate(); } audio.autoplay = true ; audio.src = app.globalData.apiUrl + "?cw=" + encodeURIComponent(base64.encode( this .data.src)); console.log(audio.src); audio.onPlay(() => { console.log( 'onPlay:开始播放' ); this .setData({ isplaying: true , playcss: 'selected' , pausecss: '' }); }); audio.onPause(() => { console.log( 'onPause:音频暂停事件' ); this .setData({ playcss: '' , pausecss: 'selected' }); curTime = audio.currentTime; }); audio.onTimeUpdate(() => { console.log( 'onTimeUpdate:音频播放进度更新事件' ); console.log(audio.currentTime); }); audio.onEnded(() => { console.log( 'onEnded:音频自然播放结束事件' ); this .setData({ isplaying: false , playcss: '' , pausecss: '' }); curTime = 0; }); audio.onStop(() => { console.log( 'onStop:音频停止事件' ); this .setData({ isplaying: false , playcss: '' , pausecss: '' }); curTime = 0; //audio.destroy(); }); audio.onError((res) => { console.log( "onError:" + res.errMsg); console.log(res); //audio.destroy(); }); audio.onWaiting((res) => { console.log( 'onWaiting:音频加载中事件,当音频因为数据不足,需要停下来加载时会触发' ) console.log(res) }); audio.onCanplay(() => { console.log( 'onCanplay' ); audio.play(); }); |
我的转成mp3已经没有问题了。而且我的音频文件很短。
遇到同样问题,现在采取了先download在播放,但还是存在下载下来的语音文件不能正常播放,请问你现在转换成mp3格式就可以解决了吗
哎,只能在服务端把wav转成mp3了。希望官方尽快给出好的解决访问或者在文档增加详细的说明,到底哪些文件在那些系统可以使用吧。这个问题应该只有IOS才会出现。。。。
下面是服务端将wav转成mp3的代码,需要的可以参考
$wavfile
=
$_REQUEST
[
'wav'
];
$wav
=
file_get_contents
(
$wavfile
);
$descriptorspec
=
array
(
0 =>
array
(
"pipe"
,
"r"
),
1 =>
array
(
"pipe"
,
"w"
),
2 =>
array
(
"file"
,
"/dev/null"
,
"w"
)
);
$process
= proc_open(
"/usr/bin/lame - -"
,
$descriptorspec
,
$pipes
);
fwrite(
$pipes
[0],
$wav
);
fclose(
$pipes
[0] );
$mp3
= stream_get_contents(
$pipes
[1] );
fclose(
$pipes
[1] );
proc_close(
$process
);
header(
'Content-Type: audio/mpeg'
);
echo
$mp3
;
这个是github上的一个类库,原理相同
https://github.com/adriengibrat/audio-streamer
为什么我不能停止呢
我看17年有个帖子也说这个问题,是什么有损压缩的不能播放是吗?
InnerAudioContext 难道不支持有损压缩的wav文件还是因为IOS不支持的原因呢?