微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例


Posted in Javascript onNovember 22, 2016

本文介绍了微信小程序的开发,主要包括图片、录音、音频播放、音乐播放、视频、文件,具体如下:

图片:

wx.chooseImage(OBJECT)

从本地相册选择图片或使用相机拍照。

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

注:文件的临时路径,在小程序本次启动期间可以正常使用,如需持久保存,需在主动调用 wx.saveFile,在小程序下次启动时才能访问得到。

示例代码:

wx.chooseImage({
 count: 1, // 默认9
 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
 success: function (res) {
  // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
  var tempFilePaths = res.tempFilePaths
 }
})

wx.previewImage(OBJECT)

预览图片。

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

示例代码:

wx.previewImage({
 current: '', // 当前显示图片的http链接
 urls: [] // 需要预览的图片http链接列表
})

wx.getImageInfo(OBJECT)

获取图片信息

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

success返回参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

示例代码:

wx.getImageInfo({
 src: 'images/a.jpg',
 success: function (res) {
  console.log(res.width)
  console.log(res.height)
 }
})

wx.chooseImage({
 success: function (res) {
  wx.getImageInfo({
   src: res.tempFilePaths[0],
   success: function (res) {
    console.log(res.width)
    console.log(res.height)
   }
  })
 }
})

录音:

wx.startRecord(OBJECT)

开始录音。当主动调用wx.stopRecord,或者录音超过1分钟时自动结束录音,返回录音文件的临时文件路径。

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

注:文件的临时路径,在小程序本次启动期间可以正常使用,如需持久保存,需在主动调用wx.saveFile,在小程序下次启动时才能访问得到。

wx.stopRecord()

主动调用停止录音。

示例代码:

wx.startRecord({
 success: function(res) {
  var tempFilePath = res.tempFilePath 
 },
 fail: function(res) {
   //录音失败
 }
})
setTimeout(function() {
 //结束录音 
 wx.stopRecord()
}, 10000)

音频播放控制:

wx.playVoice(OBJECT)

开始播放语音,同时只允许一个语音文件正在播放,如果前一个语音文件还没播放完,将中断前一个语音播放。

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

示例代码:

wx.startRecord({
 success: function(res) {
  var tempFilePath = res.tempFilePath
  wx.playVoice({
   filePath: tempFilePath,
   complete: function(){
   }
  })
 }
})

wx.pauseVoice()

暂停正在播放的语音。再次调用wx.playVoice播放同一个文件时,会从暂停处开始播放。如果想从头开始播放,需要先调用 wx.stopVoice。

示例代码:

wx.startRecord({
 success: function(res) {
  var tempFilePath = res.tempFilePath
   wx.playVoice({
   filePath: tempFilePath
  })

  setTimeout(function() {
    //暂停播放
   wx.pauseVoice()
  }, 5000)
 }
})

wx.stopVoice()

结束播放语音。

示例代码:

wx.startRecord({
 success: function(res) {
  var tempFilePath = res.tempFilePath
  wx.playVoice({
   filePath:tempFilePath
  })

  setTimeout(function(){
   wx.stopVoice()
  }, 5000)
 }
})

音乐播放控制:

wx.getBackgroundAudioPlayerState(OBJECT)
获取音乐播放状态。

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 success返回参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 示例代码:

wx.getBackgroundAudioPlayerState({
  success: function(res) {
    var status = res.status
    var dataUrl = res.dataUrl
    var currentPosition = res.currentPosition
    var duration = res.duration
    var downloadPercent = res.downloadPercent
  }
})

wx.playBackgroundAudio(OBJECT)

播放音乐,同时只能有一首音乐正在播放。

OBJECT参数说明微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

示例代码

wx.playBackgroundAudio({
  dataUrl: '',
  title: '',
  coverImgUrl: ''
})

wx.pauseBackgroundAudio()
暂停播放音乐。

示例代码

wx.pauseBackgroundAudio()

wx.seekBackgroundAudio(OBJECT)
控制音乐播放进度。

OBJECT参数说明微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

示例代码

wx.seekBackgroundAudio({
  position: 30
})

wx.stopBackgroundAudio()

停止播放音乐。

示例代码

wx.stopBackgroundAudio()

wx.onBackgroundAudioPlay(CALLBACK)

监听音乐播放。

wx.onBackgroundAudioPause(CALLBACK)
监听音乐暂停。

wx.onBackgroundAudioStop(CALLBACK)

监听音乐停止。

文件:

wx.saveFile(OBJECT)

保存文件到本地。

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

示例代码:

wx.startRecord({
 success: function(res) {
  var tempFilePath = res.tempFilePath
  wx.saveFile({
   tempFilePath: tempFilePath,
   success: function(res) {
    var savedFilePath = res.savedFilePath
   }
  })
 }
})

wx.getSavedFileList(OBJECT)

获取本地已保存的文件列表

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 success返回参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 fileList中的项目说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 示例代码:

wx.getSavedFileList({
 success: function(res) {
  console.log(res.fileList)
 }
})

wx.getSavedFileInfo(OBJECT)

获取本地文件的文件信息

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 success返回参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 示例代码:

wx.getSavedFileInfo({
 filePath: 'wxfile://somefile', //仅做示例用,非真正的文件路径
 success: function(res) {
  console.log(res.size)
  console.log(res.createTime)
 }
})

wx.removeSavedFile(OBJECT)

删除本地存储的文件

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 示例代码:

wx.getSavedFileList({
 success: function(res) {
  if (res.fileList.length > 0){
   wx.removeSavedFile({
    filePath: res.fileList[0].filePath,
    complete: function(res) {
     console.log(res)
    }
   })
  }
 }
})

wx.openDocument(OBJECT)

新开页面打开文档,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例 

示例代码

wx.downloadFile({
 url: 'http://example.com/somefile.pdf',
 success: function (res) {
  var filePath = res.tempFilePath 
  wx.openDocument({
   filePath: filePath,
   success: function (res) {
    console.log('打开文档成功')
   }
  })
 }
})

视频:

wx.chooseVideo(OBJECT)

拍摄视频或从手机相册中选视频,返回视频的临时文件路径。

OBJECT参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

返回参数说明:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

注:文件的临时路径,在小程序本次启动期间可以正常使用,如需持久保存,需在主动调用 wx.saveFile,在小程序下次启动时才能访问得到。

示例代码:

<view class="container">
  <video src="{{src}}"></video>
  <button bindtap="bindButtonTap">获取视频</button>
</view>
Page({
  bindButtonTap: function() {
    var that = this
    wx.chooseVideo({
      sourceType: ['album','camera'],
      maxDuration: 60,
      camera: ['front','back'],
      success: function(res) {
        that.setData({
          src: res.tempFilePath
        })
      }
    })
  }
})

音频组件控制:

wx.createAudioContext(audioId)

创建并返回 audio 上下文 audioContext 对象

audioContext

audioContext 通过 audioId 跟一个 audio 组件绑定,通过它可以操作一个 audio 组件。

audioContext对象的方法列表:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 示例代码:

<!-- audio.wxml -->
<audio src="{{src}}" id="myAudio" ></audio>

<button type="primary" bindtap="audioPlay">播放</button>
<button type="primary" bindtap="audioPause">暂停</button>
<button type="primary" bindtap="audio14">设置当前播放时间为14秒</button>
<button type="primary" bindtap="audioStart">回到开头</button>
// audio.js
Page({
 onReady: function (e) {
  // 使用 wx.createAudioContext 获取 audio 上下文 context
  this.audioCtx = wx.createAudioContext('myAudio')
 },
 data: {
  src: 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E06DCBDC9AB7C49FD713D632D313AC4858BACB8DDD29067D3C601481D36E62053BF8DFEAF74C0A5CCFADD6471160CAF3E6A&fromtag=46',
 },
 audioPlay: function () {
  this.audioCtx.play()
 },
 audioPause: function () {
  this.audioCtx.pause()
 },
 audio14: function () {
  this.audioCtx.seek(14)
 },
 audioStart: function () {
  this.audioCtx.seek(0)
 }
})

视频组件控制:

wx.createVideoContext(videoId)

创建并返回 video 上下文 videoContext 对象

videoContext

videoContext 通过 videoId 跟一个 video 组件绑定,通过它可以操作一个 video 组件。

videoContext对象的方法列表:微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例

 示例代码:

<view class="section tc">
 <video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400"  enable-danmu danmu-btn controls></video>
 <view class="btn-area">
  <input bindblur="bindInputBlur"/>
  <button bindtap="bindSendDanmu">发送弹幕</button>
 </view>
</view>
function getRandomColor () {
 let rgb = []
 for (let i = 0 ; i < 3; ++i){
  let color = Math.floor(Math.random() * 256).toString(16)
  color = color.length == 1 ? '0' + color : color
  rgb.push(color)
 }
 return '#' + rgb.join('')
}

Page({
 onReady: function (res) {
  this.videoContext = wx.createVideoContext('myVideo')
 },
 inputValue: '',
 bindInputBlur: function(e) {
  this.inputValue = e.detail.value
 },
 bindSendDanmu: function () {
  this.videoContext.sendDanmu({
   text: this.inputValue,
   color: getRandomColor()
  })
 }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用JS写的一个TableView控件代码
Jan 23 Javascript
JavaScript 打地鼠游戏代码说明
Oct 12 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 20 Javascript
Bootstrap table分页问题汇总
May 30 Javascript
微信小程序 Video API实例详解
Oct 02 Javascript
js实现小窗口拖拽效果
Dec 03 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
AngularJS路由删除#符号解决的办法
Sep 28 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 21 Javascript
在vue中使用vant TreeSelect分类选择组件操作
Nov 02 Javascript
JavaScript实现简单拖拽效果
Sep 15 Javascript
详解js中Json的语法与格式
Nov 22 #Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 #Javascript
javascript入门之string对象【新手必看】
Nov 22 #Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 #Javascript
js入门之Function函数的使用方法【新手必看】
Nov 22 #Javascript
AngularJS变量及过滤器Filter用法分析
Nov 22 #Javascript
jQuery中$.grep() 过滤函数 数组过滤
Nov 22 #Javascript
You might like
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
PHP统计二维数组元素个数的方法
2013/11/12 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
python实现mysql的读写分离及负载均衡
2018/02/04 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
Python3列表List入门知识附实例
2020/02/09 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
面料业务员岗位职责
2013/12/26 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
拾金不昧表扬信
2015/01/16 职场文书
预备党员个人总结
2015/02/14 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers