> 本文主要介紹一下音頻組建,官方推薦使用API方式進行創建,而不建議[使用組建方式](https://uniapp.dcloud.io/component/audio),因為靈活性差,所以使用API方式進行替換
[TOC]
## 播放音頻 (使用 uni.createInnerAudioContext)
> 高階示例代碼,可參考hello-uni里的demo
> 官方文檔:https://uniapp.dcloud.io/api/media/audio-context
~~~
<template>
<view class="page">
<button type="default" @tap="play">播放或繼續音樂</button>
<button type="default" @tap="pause">暫停音樂</button>
<button type="default" @tap="stop">停止音樂</button>
</view>
</template>
<script>
// 地址可在 http://www.gequdaquan.net/gqss/ 獲取
const audioUrl = 'http://m7.music.126.net/20201009174647/76faa967ae92e6b239a950157923c6c1/ymusic/8e8b/9cae/42b8/f4b218f89f27791d1defdfaa4a4862e7.mp3'
const innerAudioContext = uni.createInnerAudioContext();
export default {
onLoad() {
innerAudioContext.src = audioUrl
},
methods: {
play() {
console.log(innerAudioContext.src)
innerAudioContext.play();
},
pause() {
innerAudioContext.pause();
},
stop() {
innerAudioContext.stop();
}
}
}
</script>
~~~
## 播放背景音頻 (使用 uni.getBackgroundAudioManager)
> 背景音頻就是 App在后臺時,仍然在播放音樂
~~~
<template>
<view>
背景音樂播放中
</view>
</template>
<script>
export default {
onLoad() {
const bgAudioMannager = uni.getBackgroundAudioManager();
bgAudioMannager.title = '致愛麗絲';
bgAudioMannager.singer = 'wangkun';
bgAudioMannager.coverImgUrl = 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/uniapp4@2x.png';
bgAudioMannager.src = 'http://m7.music.126.net/20201009174647/76faa967ae92e6b239a950157923c6c1/ymusic/8e8b/9cae/42b8/f4b218f89f27791d1defdfaa4a4862e7.mp3';
}
}
</script>
~~~
## 錄音功能 (使用 uni.getRecorderManager)
> 官方文檔:https://uniapp.dcloud.io/api/media/record-manager
~~~
<template>
<view>
<button @tap="startRecord">開始錄音</button>
<button @tap="endRecord">停止錄音</button>
<button @tap="playVoice">播放錄音</button>
</view>
</template>
<script>
const recorderManager = uni.getRecorderManager();
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
var _this;
export default {
data(){
return {
voicePath : ''
}
},
onLoad() {
_this = this;
recorderManager.onStop(function(res) {
console.log(res)
_this.voicePath = res.tempFilePath
// 使用uni.uploadFile上傳到服務器上,此時是mp3格式
});
},
methods: {
startRecord() {
console.log('開始錄音');
recorderManager.start({
sampleRate: 16000 // 必須設置是后臺設置的參數,不然百度語音識別不了
});
},
endRecord() {
console.log('錄音結束');
_this = this;
recorderManager.stop();
},
playVoice() {
console.log('播放錄音');
if (this.voicePath) {
innerAudioContext.src = this.voicePath;
innerAudioContext.play();
}
}
}
}
</script>
~~~
- 基礎知識
- UNI核心介紹
- flex布局
- 生命周期
- 全局方法
- 組件定義
- 自定義組件
- 全局組件
- 組件之間的數據傳輸
- 條件編譯
- 自定義頭部
- 節點信息 (SelectorQuery)
- vuejs基礎語法
- 頁面跳轉以及參數傳遞
- 事件的監聽注冊以及觸發
- css3動畫
- block的妙用
- mixin (混入)
- uniapp快捷鍵
- vuex狀態管理
- 實用功能
- 獲取服務提供商
- 啟動頁 / 啟動界面
- 引導頁
- tabbar配置
- 頭部導航欄基礎設置
- 上拉下拉(刷新/加載)
- 第三方登錄
- 第三方分享
- 推送通知 之 unipush
- scroll-view雙聯動
- 配置iOS通用鏈接(Universal Links)
- 本地緩存操作
- 升級/更新方案
- 熱更新
- 圖片上傳
- 搜索頁實現
- canvas繪圖助手
- 地圖定位
- 第三方支付————todo
- 分類輪播
- 清除應用緩存
- uniapp與webview的實時通訊
- 視頻-----todo
- 聊天----todo
- 長列表swiper左右切換
- 第三方插件
- uview
- mescroll
- uCharts (圖表)
- 無名 (更新插件)
- 第三方模版
- 自定義基座
- 打包發行
- 要封裝的方法
- 緩存 cache.js
- 請求接口 request.js
- 工具類 util.js
- 小程序登錄 xcxLogin.js
- 版本更新 update.js
- 優質插件
- 更新插件----todo
- 語音
- 語音識別 (含上傳)
- 百度語音合成播報接口
- 官方常用組建
- input 輸入框
- image 圖片
- audio 音頻
- picker 選擇器
- video 視頻
- scroll-view 滾動視圖