美文网首页技术贴
小程序拍摄短视频

小程序拍摄短视频

作者: zhudying | 来源:发表于2021-11-29 14:47 被阅读0次
<template>
    <view class="camera-video">
        <button class="" @tap="showvideo()">
            点击开始录像
        </button>
        <view class="video_image">
            <view class="video_box" v-for="(item,index) in videoSrc" :key='index'>
                <video  class="showvideo" :src="item"></video>
            </view>
            <!-- <image class="videoshow" v-show="showvideoimga"  src="../../static/images/yinyue.png" @tap="showvideo"></image> -->
        </view>
        <view>
            <progress :radius='90' :percent="deflautWidth" v-if="showProgress" color="pink" stroke-width="15" class="progressStyle" />
            <view class=""   v-if="showCamera">
                <camera flash="off" style="width: 100%; height: 100%;position:fixed;top:0;z-index:1111;left:0;"></camera>
            </view>
            <view class="btn-area"  >
                <view class="">
                    <text v-if="showCamera" class="videBtn" @touchstart="handleTouchStart" @touchend="handleTouchEnd"  @longpress="handleLongPress" >按住拍</text>
                </view>
            </view>
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return { 
                cameraContext:'',
                timer:null,
                showCamera: false,
                deflautWidth:0,
                showProgress:false,
                starttime:0,
                endtime:0,
                videoSrc:[],
                showvideoimage:false
            }
        },
        onLoad() {

        },
        methods: {
            showvideo(){
                this.showCamera = true
                this.showProgress = true
            },
            // //touch start 手指触摸开始
            handleTouchStart(e){    
                this.starttime  =  e.timeStamp;    
                console.log(" 手指触摸开始 " ,  e);  
            },
            //touch end 手指触摸结束
            handleTouchEnd(e){    
                clearInterval(this.timer);
                this.endtime  =  e.timeStamp;    
                console.log(" 手指触摸结束 ", e);
                // //判断是点击还是长按 点击不做任何事件,长按 触发结束录像
                if (this.endtime - this.starttime > 350) {
                    console.log("操作为长按");
                    //长按操作 调用结束录像方法
                    this.stopShootVideo();
                }
            },
            // 长按拍摄按钮进行录像
            handleLongPress(e){
              console.log("长按",e);
              // 长按方法触发,调用开始录像方法
              this.startShootVideo();
            },
            //录制视频 start
            startShootVideo() {
                // 超过100 停止
                if(this.deflautWidth >= 100) return
                let index = 0;
                this.timer=setInterval(() => {
                    if(this.deflautWidth !=100){
                        index += 10;
                        this.deflautWidth = index
                    }
                    if (this.deflautWidth >= 100) {
                        clearInterval(this.timer);
                        this.stopShootVideo();
                    }
                }, 1000);
        
                console.log("========= 调用开始录像 ===========")
                this.cameraContext = uni.createCameraContext();
                this.cameraContext.startRecord({
                    success: res => {
                        console.log("录像成功")
                        console.log(res)
                    },
                    fail:err=>{
                        console.log(err,'结束失败')
                    },
                    complete:end=>{
                        console.log(end,'开始录像结束调用')
                    },
                    timeoutCallback:timeout=>{
                        console.log('接超过30s或页面onHide时,结束录像')
                    }
                });
            },
            //录制视频 end
            stopShootVideo() {
                console.log("========= 调用结束录像 ===========")
                this.cameraContext = uni.createCameraContext();
                setTimeout(()=>{ // 结束调用偶发失败,加个setTimeout试试
                    this.cameraContext.stopRecord({
                        success: res => {
                            console.log("结束成功",res)
                            this.videoSrc.push(res.tempVideoPath)
                            console.log(this.videoSrc,'videoSrc')
                        },
                        fail:err=>{
                            console.log(err,'结束失败')
                        },
                        complete:end=>{
                            console.log(end,'结束调用')
                            this.showCamera = false
                            this.deflautWidth = 0
                            this.showProgress = false
                        },
                        // compressed:compress=>{
                        //  console.log('压缩视频')
                        // }
                    });
                },100)
            },
        }
    }
</script>

<style>
    .camera-video {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }
    .video_box{
        margin-right: 20rpx;
        margin-top: 20rpx;
    }
    .videoshow{
      border: 1rpx solid #cccccc;
      width: 200rpx;
      height: 200rpx;
    }
    .showvideo{
      width: 200rpx;
      height: 200rpx;
    }
    .videBtn{
      position: fixed;
      bottom: 20rpx;
      left: 50%;
      transform:translateX(-50%);
      width: 200rpx;
      height: 200rpx;
      border-radius:50%;
      font-size: 35rpx;
      color:green ;
      text-align: center;
      line-height: 190rpx;
      border: 7rpx solid green;
      background:rgba(0,0,0,0);
      z-index: 11111;
      padding: 0;
      margin: 0;
    }
    .progressStyle{
      position: fixed;
      top: 0rpx;
      left: 0rpx;
      z-index: 111111;
      width: 100%;
    }
</style>

相关文章

  • 小程序拍摄短视频

  • 做一款拍摄短视频和照片的微信小程序

    做一个款短视频拍摄的微信小程序,看了下微信接口,以为很简单,大致步骤开始拍摄,停止拍摄,保存,就结束了,谁知道做的...

  • 视频教程

    IT营视频 珠峰视频 微信小程序---诗词答题小程序 前端开发博客

  • 2020年的个人目标

    1、上线 2 个微信小程序 2、用 Vue 做一套网站 3、学会画产品原型图 4、学会写视频拍摄脚本

  • 短视频拍摄小技巧

    1.设备。 你需要一台可以拍出慢动作视频的相机,看到这里可能有些小伙伴要慌了,不要怕,手机也是可以的。现在大部分的...

  • 【总结】2017.02.28

    2017.02.28 - 计划 熟悉swiper控制 小程序视频控制 - 实际完成 小程序视频控制(API与属性)...

  • 如何使用抖音APP拍出高质量小视频——技巧篇

    一、高质量小视频拍摄———主题篇 视频虽然短,只有15秒短视频,但要在15秒内,完成内容表达,确是需要技巧。 所以...

  • 杭州创业项目——视频号链接小程序

    会员只需每天去变现网页上领取视频和推广小程序,再通过微信视频号发布视频,链接小程序,只要有其他的用户点进小程序消费...

  • #读书笔记#流量池Day2韦静

    1.摘要 无论是App品牌展示、图片二维码、视频贴片、搜索竞价、口碑软文,还是后起的DSP、feeds、小程序、短...

  • 拍摄视频

    20180702,星期一,晴 自从漏了几个客人的订单后,包包里就放一个小本子,方便放假和晚上的夜猫子,随时记录订单...

网友评论

    本文标题:小程序拍摄短视频

    本文链接:https://www.haomeiwen.com/subject/hdmwtrtx.html