阴阳师召唤式神app(安卓)

式神召唤app

  • 1.效果预览
  • 2.简介
  • 3.上传视频获取播放地址
    • 3.1 视频预处理
    • 3.2 获取视频播放地址
  • 4. 视频链接上传到csdn博客上
    • 4.1 android获取博客上的视频链接
  • 5.App和源码下载地址。

1.效果预览

阴阳师召唤式神app

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()
    # os.remove(f'{title1}.mp3')
    # os.remove(f'{title2}.mp4')
    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)#这个是图片的尺寸,一定要和要用的图片size一致
    #完成写入对象的创建,第一个参数是合成之后的视频的名称,第二个参数是可以使用的编码器,第三个参数是帧率即每秒钟展示多少张图片,第四个参数是图片大小信息
    videowrite = cv2.VideoWriter(r'test.mp4',-1,fps,size)#20是帧数,size是图片尺寸
    while True:
        r,fram=cap.read()
        if not r:
            break
        fram=255-fram
        # cv2.imshow('d321',fram)
        # cv2.waitKey(30)
        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 获取视频播放地址

在我们上传以后使用浏览器自带的抓包工具进行抓包如下所示:
阴阳师召唤式神app(安卓)_第1张图片
图中红色框中以 .mp4结尾的链接即为其播放地址,拿到这个地址就可以通过android中的mediaplayer播放该视频。

4. 视频链接上传到csdn博客上

在我们获取到视频的播放链接以后,需要将其都上传到一篇博客上面,如下所示:
阴阳师召唤式神app(安卓)_第2张图片
在后期我们需要添加召唤视频或者更改召唤视频的时候,只需要更改一下博客即可,无需更改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

你可能感兴趣的:(android,python,着色器,动画,图形渲染)