微信小程序开发 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