1.效果预览
b站视频地址:https://www.bilibili.com/video/BV1ig411D7rD/?vd_source=65a01bd1c4223f2aede873e40c0cdb3e
2.简介
众所周知,阴阳师手游抽卡的概率非常低,为了体验一下抽卡的快乐,我制作了一款召唤式神的app,可以召唤全部ssr和sp式神。由于没有服务器,为了减小app的大小,则需要将召唤动画上传到第三方短视频网站(好看视频),获取视频的在线播放地址,然后再将地址发布到一篇博客上。当我们启动app的时候实现会从博客上面爬取所有的视频在线播放地址,召唤的时候会从众多的播放地址中随机选择一个进行播放。以后如果想要增加或更改召唤的视频,只需要更改博客上的视频连接即可,无须更改app的源码。这样一来即使没有服务器,也通过间接的方式到达了服务器的部分功能。最后,该App的大小仅有3M。
3.上传视频获取播放地址
由于召唤动画较多,如果全部放到app资源文件中,会导致app文件太大。所以需要将动画上传到 好看视频网站,为什么部上传到快手,抖音,腾讯等平台,这是因为其他平台的播放地址不容易获取到,经过浏览器抓包,发现好看视频网站的视频很容易获取视频播放地址。
3.1 视频预处理
由于在好看视频网站上传召唤动画的人较多,如果我们直接上传召唤动画的时候,系统审核会不通过,提示于其他创作者视频高度重复。无论是分屏还是镜像都无法通过审核,经过多次测试,将颜色翻转(用255-rgb颜色值得)会很容易通过审核。当我们在app中播放视频的时候,使用opengl es 再将颜色翻转回来。下面是sp八岐大蛇召唤动漫转换前后的视频对比,以及转换视频的python代码。 转换前(原始视频):
转换后(上传视频):
python批量转换视频代码(运行的时候只需要在代码同级目录新建outVideo文件夹,并且更改root变量,让其对于你需要批量转换视频所在的文件夹):
import numpy as np
import cv2
import moviepy.editor as mp
from moviepy import *
from moviepy.editor import *
import ffmpeg
import os
def extract_audio(videos_file_path):
my_clip = mp.VideoFileClip(videos_file_path)
return my_clip
def merge2(outname):
music = 'out'
video='test'
audio = ffmpeg.input(f'{music}.mp3')
video = ffmpeg.input(f'{video}.mp4')
print("合并视音频")
out = ffmpeg.output(video, audio, './outVideo/'+outname)
out.run()
print("完成")
def Video(video_path):
video_name=video_path.split('/')[-1]
cap=cv2.VideoCapture(video_path)
width=int(cap.get(3))
height=int(cap.get(4))
fps=cap.get(5)
size = (width,height)
videowrite = cv2.VideoWriter(r'test.mp4',-1,fps,size)
while True:
r,fram=cap.read()
if not r:
break
fram=255-fram
videowrite.write(fram)
videowrite.release()
print('end!')
"""
提取音频
"""
file_path = r'视频.mp4'
my_clip = extract_audio(video_path)
my_clip.audio.write_audiofile(f'out.mp3')
"""
音视频合并
"""
merge2(video_name)
if __name__ == '__main__':
root="E:\导出动画/"
file_names=os.listdir(root)
a=0
for file_name in file_names:
video_path=root+file_name
Video(video_path)
a+=1
print(a)
3.2 获取视频播放地址
在我们上传以后使用浏览器自带的抓包工具进行抓包如下所示: 图中红色框中以 .mp4结尾的链接即为其播放地址,拿到这个地址就可以通过android中的mediaplayer播放该视频。
4. 视频链接上传到csdn博客上
在我们获取到视频的播放链接以后,需要将其都上传到一篇博客上面,如下所示: 在后期我们需要添加召唤视频或者更改召唤视频的时候,只需要更改一下博客即可,无需更改app源码。
4.1 android获取博客上的视频链接
使用Android中的Jsoup来爬取博客内容,其代码如下所示(代码中的URLS为一个字符串list集合):
private void getUrlsFromNET(){
new Thread() {
@Override
public void run() {
super.run();
try {
Document doc = Jsoup.connect("https://blog.csdn.net/qq_45087786/article/details/126525158").get();
Elements els = doc.select("div.prism-atom-one-dark");
String aaa = els.text();
String[] strs = aaa.split(" ");
Collections.addAll(URLS, strs);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
5.App和源码下载地址。
该app我已经上传到蒲公英内测分发平台,如果感兴趣可以前往下载尝试,下载链接:https://www.pgyer.com/U7CR
源码地址:https://gitee.com/mqwdasddqw/Yys
|