随着短视频的火热,现在有很多有很多微信小程序都有去除短视频水印的功能,正好对这一块也感兴趣,我也打算做个小程序。
搜索了下github上的相关项目,发现已经有类似的开源项目了,那我们就基于开源项目直接上手,减少开发周期吧.
项目地址如下:
https://github.com/huyangfeng/watermask
将上面的代码拉取到我的服务器上,然后启动,这样就可以调用api了
小程序这块就使用uniapp进行开发,然后弄了个布局,效果如下:
点击一键去水印,然后去调用解析视频的api,返回最后的视频地址,然后在小程序里面显示视频,下方增加个保存相册的功能。
点击保存到相册就可以进行保存了。
在进行保存到相册的时候,有点问题,线上老是报 :fail url not in domain list,这是因为抖音生成的url是个二级域名,这个二级域名老是变化,在小程序里面没办法把所有的二级域名都加上,于是就自己写了个接口把视频下载到自己的服务器上,提供自己的服务器url进行下载,就是速度慢了点。
下载视频的api代码如下
def video_down(request: Request,url: str):
http_result = {
'succ' : 'F',
'message' : ''
}
# 先验证用户的积分是否足够
open_id = request.headers.get('userId', None)
user_info = dbHelper.get_user_info(open_id)
if user_info:
# 下载文件
video_remote_url = url
local_file_name = 'video_' + str(time.time()) + '.mp4'
local_url = '/data/' + local_file_name
down_result = tentvoice.download_video(video_remote_url, local_url)
# 验证视频的长度,视频不能长于20分钟,太长的话给出提示
if down_result:
new_url = "www.aa.com/{file}".format(file=local_file_name)
http_result['succ'] = 'T'
http_result['message'] = new_url
dbHelper.insert_user_score(open_id, 1, 100, '视频下载消耗积分')
else:
http_result['message'] = '文件下载到本地失败'
else:
http_result['message'] = '用户标识出错'
return utils.get_response(200, http_result)
当然里面还涉及到很多的细节问题,视频去水印的小程序目前太多了,目前就当是学习吧。
最后大家可以扫描下我的小程序,给点建议,务喷!