博客
关于我
第6章:上传视频业务流程开发(6-1 上传短视频业务流程图 —6-14 小程序端上传短视频联调)
阅读量:221 次
发布时间:2019-02-28

本文共 3777 字,大约阅读时间需要 12 分钟。

上传短视频业务流程与实现

1. 上传短视频业务流程图

一个包含上传短视频的业务流程图,展示了从用户选择视频到背景音乐选择以及最终上传短视频的完整过程。

2. 用户选择视频

在小程序端,可以通过调用 wx.chooseVideo 接口实现视频的选择。该接口支持从手机相册中选择视频或拍摄新的视频。

uploadVideo: function() {    const me = this;    wx.chooseVideo({        sourceType: ['album'],        success(res) {            const duration = res.duration;            const tmpheight = res.height;            const tmpwidth = res.width;            const tmpVideoUrl = res.tempFilePath;            const tmpCoverUrl = res.thumbTempFilePath;            if (duration > 11) {                wx.showToast({                    title: '视频长度不能超过10秒...',                    icon: 'none',                    duration: 2500                });            } else if (duration < 1) {                wx.showToast({                    title: '视频长度不能小于1秒...',                    icon: 'none',                    duration: 2500                });            } else {                // 打开选择BGM的页面                wx.navigateTo({                    url: '../chooseBgm/chooseBgm?duration=' + duration + '&tmpheight=' + tmpheight + '&tmpwidth=' + tmpwidth + '&tmpVideoUrl=' + tmpVideoUrl + '&tmpCoverUrl=' + tmpCoverUrl                });            }        }    });}

3. 选择背景音乐页面讲解

1. 新增背景音乐选择页面

chooseBgm.wxml 中添加音频组件,并在 chooseBgm.js 中配置音频数据。需要注意的是,直接使用微信官方音频组件可能会遇到权限问题,建议将音乐下载到本地后再传输至云开发环境。

2. 页面开发与联调

chooseBgm.js 中添加页面联调代码,通过 wx.request 调用后端接口获取背景音乐列表,并在前端完成数据绑定和播放功能。

const app = getApp();Page({    data: {        bgmList: [],        serverUrl: ""    },    onLoad: function() {        const me = this;        wx.showLoading({            title: '请等待...'        });        const serverUrl = app.serverUrl;        wx.request({            url: serverUrl + '/bgm/list',            method: 'POST',            header: {                'content-type': 'application/json'            },            success(res) {                console.log(res.data);                wx.hideLoading();                if (res.data.status === 200) {                    const bgmList = res.data.data;                    me.setData({                        bgmList: bgmList,                        serverUrl: serverUrl                    });                }            }        });    }});

4. 后台BGM列表接口开发

1. 接口开发

  • 接口定义:在 BgmService.java 中定义 queryBgmList 方法,返回背景音乐列表。
  • 实现类:在 BgmServiceImpl.java 中实现 queryBgmList 方法,调用数据库查询所有 BGM 资源。
  • 控制器:在 BgmController.java 中开发 /list 接口,调用服务层方法获取数据并返回。

2. 测试与验证

确保后端接口能够正常返回数据,并在前端页面正确展示 BGM 列表和播放功能。

5. 开发上传短视频接口并完善 Swagger 测试

1. 接口开发

VideoController.java 中开发 /upload 接口,支持视频上传和参数传递。接口支持以下参数:

  • userId:用户 ID,必填
  • bgmId:背景音乐 ID,可选
  • videoSeconds:视频播放长度,必填
  • videoWidth:视频宽度,必填
  • videoHeight:视频高度,必填
  • desc:视频描述,可选

2. Swagger 测试

通过 Swagger 2.0 测试接口,确保接口参数与请求格式符合规范,并提供清晰的 API 文档。

6. 视频临时参数传入下一个页面

mine.js 中实现页面跳转,传递视频相关参数(如时间、尺寸等),并在 chooseBgm.js 中接收并处理这些参数。

upload: function(e) {    const me = this;    const bgmId = e.detail.value.bgmId;    const desc = e.detail.value.desc;    console.log("bgmId:", bgmId);    console.log("desc:", desc);        wx.showLoading({        title: '上传中...'    });        const serverUrl = app.serverUrl;    wx.uploadFile({        url: serverUrl + '/video/upload',        formData: {            userId: app.userInfo.id,            bgmId: bgmId,            desc: desc,            videoSeconds: duration,            videoHeight: tmpheight,            videoWidth: tmpwidth        },        filePath: tmpVideoUrl,        name: 'file',        header: {            'content-type': 'application/json'        },        success(res) {            wx.hideLoading();            if (res.status === 200) {                wx.showToast({                    title: '上传成功!',                    icon: 'success'                });            }        }    });}

7. 小程序端上传短视频联调

chooseBgm.js 中实现视频上传功能,通过 wx.uploadFile 调用后端接口,完成短视频的上传与存储。

转载地址:http://rnrp.baihongyu.com/

你可能感兴趣的文章
Nginx配置ssl实现https
查看>>
Nginx配置TCP代理指南
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NI笔试——大数加法
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
查看>>
NR,NF,FNR
查看>>
nrf开发笔记一开发软件
查看>>
NSDateFormatter的替代方法
查看>>
NSSet集合 无序的 不能重复的
查看>>
ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
查看>>
nullnullHuge Pages
查看>>
numpy 用法
查看>>
Numpy如何使用np.umprod重写range函数中i的python
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
查看>>
OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
查看>>
OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
查看>>