uni-app 自定义浮窗拍摄视频功能

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app 自定义浮窗拍摄视频功能

3 回复

专业插件开发,加Q 1196097915


我这有功能基本上差不多的插件,双端,联系QQ:16792999

在uni-app中实现自定义浮窗拍摄视频功能,可以通过集成相机组件并利用浮窗(如自定义弹窗或遮罩层)来实现。以下是一个简化的代码示例,展示如何在uni-app中实现这一功能。

首先,在页面的.vue文件中,我们需要定义一个浮窗组件,以及一个相机组件。这里我们使用uni-camera组件来实现视频拍摄功能。

<template>
  <view class="container">
    <!-- 浮窗按钮 -->
    <view class="float-window" @click="showCamera">
      <text>拍摄视频</text>
    </view>
    
    <!-- 浮窗相机 -->
    <view v-if="isCameraVisible" class="camera-overlay" @click.self="hideCamera">
      <uni-camera
        class="camera"
        :device-position="cameraPosition"
        flash="auto"
        @stop="onCameraStop"
      ></uni-camera>
      
      <!-- 拍摄按钮 -->
      <view class="capture-btn" @click="captureVideo">拍摄</view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      isCameraVisible: false,
      cameraPosition: 'back', // 前置或后置摄像头
      tempVideoPath: '' // 临时视频路径
    };
  },
  methods: {
    showCamera() {
      this.isCameraVisible = true;
    },
    hideCamera() {
      this.isCameraVisible = false;
    },
    captureVideo() {
      const cameraContext = uni.createCameraContext();
      cameraContext.stop({
        success: (res) => {
          this.tempVideoPath = res.tempVideoPath;
          this.hideCamera();
          // 处理拍摄后的视频,如预览或上传
          console.log('拍摄的视频路径:', this.tempVideoPath);
        },
        fail: (err) => {
          console.error('拍摄失败:', err);
        }
      });
    },
    onCameraStop(e) {
      console.log('相机停止:', e);
    }
  }
};
</script>

<style>
.container {
  position: relative;
  height: 100vh;
}
.float-window {
  position: fixed;
  bottom: 20px;
  right: 20px;
  background-color: rgba(0, 0, 0, 0.5);
  color: white;
  border-radius: 50%;
  padding: 10px;
}
.camera-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.7);
  display: flex;
  justify-content: center;
  align-items: center;
}
.camera {
  width: 100%;
  height: 100%;
}
.capture-btn {
  position: absolute;
  bottom: 50px;
  width: 100px;
  height: 50px;
  background-color: white;
  color: black;
  text-align: center;
  line-height: 50px;
  border-radius: 25px;
}
</style>

以上代码展示了一个基本的浮窗拍摄视频功能。浮窗按钮点击后显示相机浮窗,浮窗中包含拍摄按钮,点击拍摄按钮后停止拍摄并获取视频路径。注意,这只是一个基础示例,实际应用中可能需要更多的细节处理,如权限申请、错误处理等。

回到顶部