微信小程序-實(shí)現(xiàn)錄制視頻(附部分代碼)

項(xiàng)目中,需要客戶(hù)錄制一段視頻,上傳到服務(wù)器,找了很久,終于實(shí)現(xiàn)了這個(gè)功能。微信小程序有兩種方式可以實(shí)現(xiàn)錄制視頻。

1.使用相機(jī)的CameraContext.startRecord
2.使用官方API:wx.chooseVideo
方法一
wxml

<view class="video">
  <camera wx:if="{{videoSrc.length === 0}}" device-position="font" flash="off" binderror="error" style="width: {{cameraWidth}}px;height: 442rpx;">
  </camera>
  <video style="width: {{cameraWidth}}px; height: 442rpx;" wx:else src="{{videoSrc}}" controls></video>
</view>
  <view class="btn" id='btn-photo' bindtouchstart="handleTouchStart" bindtouchend="handleTouchEnd" bindlongpress="handleLongPress">按住錄制</view>

js部分代碼

  onLoad: function (options) {
    //調(diào)用設(shè)置相機(jī)大小的方法
    this.setCameraSize();
    this.ctx = wx.createCameraContext();
  },
  /**
   * 獲取系統(tǒng)信息 設(shè)置相機(jī)的大小適應(yīng)屏幕
   */
  setCameraSize() {
    //獲取設(shè)備信息
    const res = wx.getSystemInfoSync();
    //獲取屏幕的可使用寬高,設(shè)置給相機(jī)
    this.setData({
      cameraHeight: res.windowHeight,
      cameraWidth: res.windowWidth
    })
    console.log(res)
  },
  /**
   * 開(kāi)始錄像的方法
   */
  startShootVideo() {
    this.setData({
      videoSrc: ''
    })
    console.log("========= 調(diào)用開(kāi)始錄像 ===========")
    let that = this
    this.ctx.startRecord({
      timeoutCallback: () => {
      },
      success: (res) => {
      },
      fail() {
        wx.showToast({
          title: '錄像失敗',
          icon: 'none',
          duration:4000
        })
        console.log("========= 調(diào)用開(kāi)始錄像失敗 ===========")
      }
    })
  },
  /**
   * 結(jié)束錄像
   */
  stopShootVideo() {
    wx.hideLoading();
    // console.log("========= 調(diào)用結(jié)束錄像 ===========")
    this.ctx.stopRecord({
      compressed: true, //壓縮視頻
      success: (res) => {
        console.log(res)
        this.setData({
          videoSrc: res.tempVideoPath
        })
      },
      fail() {
        wx.showToast({
          title: '錄像失敗',
          icon: 'none',
          duration:4000
        })
        console.log("========= 調(diào)用結(jié)束錄像失敗 ===========")
      }
    })
  },

  //touch start 手指觸摸開(kāi)始
  handleTouchStart: function (e) {
    this.setData({
      startTime: e.timeStamp
    })
  },

  //touch end 手指觸摸結(jié)束
  handleTouchEnd: function (e) {
    // wx.hideLoading();
    let endTime = e.timeStamp;
    //判斷是點(diǎn)擊還是長(zhǎng)按 點(diǎn)擊不做任何事件,長(zhǎng)按 觸發(fā)結(jié)束錄像
    if (endTime - this.data.startTime > 350) {
      //長(zhǎng)按操作 調(diào)用結(jié)束錄像方法
      this.stopShootVideo();
    } else {
      this.setData({
        textFlag: ''
      })
    }

  },

  /**
   * 長(zhǎng)按按鈕進(jìn)行錄像
   */
  handleLongPress: function (e) {
    // 長(zhǎng)按方法觸發(fā),調(diào)用開(kāi)始錄像方法
    this.startShootVideo();
  },

注:由于官方限制,只能錄制30秒。

方法二
在js中

wx.chooseVideo({
  sourceType: ['album','camera'],
  maxDuration: 60,
  camera: 'back',
  success(res) {
    console.log(res.tempFilePath)
  }
})

使用wx.chooseVideo拍攝視頻或從手機(jī)相冊(cè)中選視頻,拍攝界面不能自定義。
如果有什么不清楚的地方,歡迎私信哦.
具體參數(shù)說(shuō)明請(qǐng)參考官方文檔
https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseVideo.html(鏈接地址)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 每天的學(xué)習(xí)記錄,可能有的地方寫(xiě)的不對(duì),因?yàn)閯倢W(xué),以后發(fā)現(xiàn)錯(cuò)的話會(huì)回來(lái)改掉整體流程 https://develope...
    有點(diǎn)健忘閱讀 5,018評(píng)論 0 7
  • 第一章 什么是微信小程序 1. 小程序介紹 微信小程序是一種全新的連接用戶(hù)與服務(wù)的方式,它可以在微信內(nèi)被便捷地獲取...
    呆毛和二貨閱讀 969評(píng)論 0 1
  • 因新工作主要負(fù)責(zé)微信小程序這一塊,最近的重心就移到這一塊,該博客是對(duì)微信小程序整體的整理歸納以及標(biāo)明一些細(xì)節(jié)點(diǎn),初...
    majun00閱讀 7,632評(píng)論 0 9
  • 什么是微信小程序 騰訊公司于2016年9月21日開(kāi)始微信小程序內(nèi)測(cè),一時(shí)間小程序的討論熱度不斷。網(wǎng)絡(luò)上流傳一張張小...
    centuryscr閱讀 5,801評(píng)論 0 3
  • HTML是超文本標(biāo)記語(yǔ)言 標(biāo)記是用一個(gè)特定符號(hào)表示特定意思,比方說(shuō)用對(duì)號(hào)表示正確,用叉號(hào)表示錯(cuò)誤,這就是一種標(biāo)記。...
    ytxing閱讀 697評(píng)論 0 0

友情鏈接更多精彩內(nèi)容