微信小程序开发 Note-6
@ 2018年8月17日 22:51:33
上传短视频业务流程
用户选择视频(10s限制或即时拍摄);
BGM选择页面;
选择/不选择,并且输入描述(可为空);
上传(Controller);
保存视频截图(封面);
用户是否选择BGM;
 -否——直接保存视频;
 -是——合并视频和BGM成新视频,并保存;
用户选择视频
wx.chooseVideo(OBJECT)
拍摄视频或从手机相册中选视频,返回视频的临时文件路径。
OBJECT参数说明:
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| sourceType | StringArray | 否 | album 从相册选视频,camera 使用相机拍摄,默认为:[‘album’, ‘camera’] | 
| compressed | Boolead | 否 | 是否压缩所选的视频源文件,默认值为true,需要压缩 | 
| maxDuration | Number | 否 | 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒 | 
| success | Function | 否 | 接口调用成功,返回视频文件的临时文件路径,详见返回参数说明 | 
| fail | Function | 否 | 接口调用失败的回调函数 | 
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
1  | const app = getApp()  | 
后台BGM列表接口
1  | // Service  | 
1  | // Controller  | 
BGM页面联调 & 获取背景音乐列表
1  | const app = getApp()  | 
1  | <view>  | 
开发上传短视频接口 & Swagger测试上传
1  | // Controller  | 
视频临时参数传入下一个页面
1  | // 打开BGM选择页面  | 
1  | const app = getApp()  | 
小程序上传短视频联调
1  | // Controler  | 
1  | const app = getApp()  | 
FFMPEG
视音频处理工具;跨平台的视音频处理解决方案;
播放器(暴风);转码工具(格式工厂);直播、视频加码、滤镜、水印、特效;
1  | ffmpeg -i input.mp4 output.avi  | 
JAVA & FFMPEG
1  | public class FFMPEGTest {  | 
FFMPEG操作视频 & BGM
1  | ffmpeg.exe -i test.mp4 -i bgm.mp3 -t 10 -y done.mp4  | 
JAVA合并音视频
1  | // 在JAVA & FFMPEG的基础上,进行修改即可  | 
保存视频信息 & 数据库
1  | // Service  | 
1  | // Controller  | 
上传封面图 & 数据库
1  | // Service  | 
1  | // Controller  | 
小程序上传视频业务流程联调
1  | // 封面图上传 补充  | 
联调手机端 & 坑
在使用手机端测试时,res所返回的数据与PC端返回的数据不同;
手机端所返回的数据中,不包含封面图的数据信息;
所以,才用FFMPEG生成截图的方式,生成封面图;
使用FFMPEG生成截图
1  | public class FetchVideoCover {  | 
上传视频流程 & 整合视频截图功能
上传流程联调
在上传视频的同时,制作封面图,并且将封面图的CoverPath存储到数据库即可;
就解决了PC和手机传回数据不同的问题,不再需要二次request的过程;
1  | // 产生视频封面  | 
@ 2018年8月19日 19:47:47