1. 主页 > 棋牌开发 >

app开发代码get(开发app程序)

  本文是关于app开发代码get(开发app程序)的内容,如何把视频转化代码?    1、需要安装opencv,直接安装 pip install opencv-python 2、需要安装ffmpe…...


2022年如何把视频转化代码?

   

1、需要安装opencv,直接安装 pip install opencv-python

2、需要安装ffmpeg ,直接解压免安装,下载传送门; 将 ffmpeg.exe 的路径复制,替换代码开头的ffmpeg = r'G:ffmpegbinffmpeg.exe‘   

二、源代码 复制代码import osimport subprocessimport shutilimport cv2from PIL import Image, ImageFont, ImageDrawFFMPEG = r'D:ffmpegbinffmpeg.exe'class CodeVideo:    def __init__(self, **kwargs):        """        :param kwargs:            vediopath: 输入视频文件路径            gray: 输出视频的颜色 True 灰色 False 彩色 默认 True            style: 输出视频的代码风格 可选有

0,

1,

2,3 种 默认 0            clean: 是否删除临时文件 True 删除 False 不删除 默认 True            cut: 是否先对原视频做截取处理 True 截取 False 不截取 默认 False            start: 视频截取开始时间点, 默认 00:00:00 仅当iscut=True时有效            end: 视频截取结束时间点, 默认 00:00:14 仅当iscut=True时有效        """        self.vediopath = kwargs.get('vediopath')        self.code_color = (16

9, 16

9, 169) if kwargs.get('gray', True) else None        self.clean = kwargs.get('clean', True)        self.cut = kwargs.get('cut', False)        self.cut_start = kwargs.get('start', '00:00:00')        self.cut_end = kwargs.get('end', '00:00:14')        self.ascii_char = (            list("MNHQ$OC67)oa+>!:+. "),            list("MNHQ$OC67+>!:-. "),            list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~i!lI;:oa+>!:+. "),            ['.', ',', ':', ';', '+', '*', '?', '%', 'S', '#', '@'],        )[kwargs.get('style', 0)]# 像素对应ascii码    def main(self):        file_cut = self.vediopath.split('.')[0] + '_cut.mp4'        file_mp3 = self.vediopath.split('.')[0] + '.mp3'        file_temp_avi = self.vediopath.split('.')[0] + '_temp.avi'        outfile_name = self.vediopath.split('.')[0] + '_code.mp4'        print("开始生成...")        if self.cut:            print("正在截取视频...")            self.vediocut(self.vediopath, file_cut, self.cut_start, self.cut_end)            self.vediopath = file_cut        print("正在转换代码图片...")        vc = self.video2txt_jpg(self.vediopath)# 视频转图片,图片转代码图片        FPS = vc.get(cv2.CAP_PROP_FPS)# 获取帧率        vc.release()        print("正在分离音频...")        self.video2mp3(self.vediopath, file_mp3)# 从原视频分离出 音频mp3        print("正在转换代码视频...")        self.jpg2video(file_temp_avi, FPS)# 代码图片转视频        print("正在合成目标视频...")        self.video_add_mp3(file_temp_avi, file_mp

3, outfile_name)# 将音频合成到代码视频        if self.clean:# 移除临时文件            print("正在移除临时文件...")            shutil.rmtree("Cache")            for file in [file_cut, file_mp

3, file_temp_avi]:                if os.path.exists(file):                    os.remove(file)        print("生成成功:{0}".format(outfile_name))    # 将视频拆分成图片    def video2txt_jpg(self, file_name):        vc = cv2.VideoCapture(file_name)        c = 1        if vc.isOpened():            r, frame = vc.read()            if not os.path.exists('Cache'):                os.mkdir('Cache')            os.chdir('Cache')        else:            r = False        while r:            cv2.imwrite(str(c) + '.jpg', frame)            self.txt2image(str(c) + '.jpg')# 同时转换为ascii图            r, frame = vc.read()            c += 1        os.chdir('..')        return vc    # 将txt转换为图片    def txt2image(self, file_name):        im = Image.open(file_name).convert('RGB')        # gif拆分后的图像,需要转换,否则报错,由于gif分割后保存的是索引颜色        raw_width = im.width        raw_height = im.height        width = int(raw_width / 6)        height = int(raw_height / 15)        im = im.resize((width, height), Image.NEAREST)        txt = ""        colors = []        for i in range(height):            for j in range(width):                pixel = im.getpixel((j, i))                colors.append((pixel[0], pixel[1], pixel[2]))                if (len(pixel) == 4):                    txt += self.get_char(pixel[0], pixel[1], pixel[2], pixel[3])                else:                    txt += self.get_char(pixel[0], pixel[1], pixel[2])            txt += ''            colors.append((25

5, 25

5, 255))        im_txt = Image.new("RGB", (raw_width, raw_height), (25

5, 25

5, 255))        dr = ImageDraw.Draw(im_txt)        # font = ImageFont.truetype(os.path.join("fonts","汉仪楷体简.ttf"),18)        font = ImageFont.load_default().font        x = y = 0        # 获取字体的宽高        font_w, font_h = font.getsize(txt[1])        font_h *= 1.37# 调整后更佳        # ImageDraw为每个ascii码进行上色        for i in range(len(txt)):            if (txt[i] == ''):                x += font_h                y = -font_w            if self.code_color:                dr.text((y, x), txt[i], fill=self.code_color)# fill=colors[i]彩色            else:                dr.text((y, x), txt[i], fill=colors[i])# fill=colors[i]彩色            y += font_w        im_txt.save(file_name)    # 将像素转换为ascii码    def get_char(self, r, g, b, alpha=256):        if alpha == 0:            return ''        gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)        unit = (256.0 + 1) / len(self.ascii_char)        return self.ascii_char[int(gray / unit)]    # 代码图片转视频    @staticmethod    def jpg2video(outfile_name, fps):        fourcc = cv2.VideoWriter_fourcc(*"MJPG")        images = os.listdir('Cache')        im = Image.open('Cache/' + images[0])        vw = cv2.VideoWriter(outfile_name, fourcc, fps, im.size)        os.chdir('Cache')        for image in range(len(images)):            frame = cv2.imread(str(image + 1) + '.jpg')            vw.write(frame)        os.chdir('..')        vw.release()    # 调用 ffmpeg 分离音频    @staticmethod    def video2mp3(file_name, outfile_name):        cmdstr = f'{FFMPEG} -i {file_name} -f mp3 {outfile_name} -y'        subprocess.call(cmdstr, shell=True, creationflags=0x08000000)    # 调用 ffmpeg 给视频添加音频    @staticmethod    def video_add_mp3(file_name, mp3_file, outfile_name):        cmdstr = f'{FFMPEG} -i {file_name} -i {mp3_file} -strict -2 -f mp4 {outfile_name} -y'        subprocess.call(cmdstr, shell=True, creationflags=0x08000000)    # 调用 ffmpeg 截取视频    @staticmethod    def vediocut(file_name, outfile_name, start, end):        cmdstr = f'{FFMPEG} -i {file_name} -vcodec copy -acodec copy -ss {start} -to {end} {outfile_name} -y'        subprocess.call(cmdstr, shell=True, creationflags=0x08000000)if __name__ == '__main__':    vediopath = r"C:UsersAdministratorDesktoptest.mp4"    CodeVideo(vediopath=vediopath).main()。

2022年IntelliJ IDEA生成get\/set方法的快捷键是什么?

alt+enter:

1、alt+enter是一种用途广泛的操作,app开发代码get把光标放在一个没有get和set方法的私有成员变量上,按alt+enter就会弹出一个小窗。

「app开发代码get」IntelliJ IDEA生成get\/set方法的快捷键是什么?

2022年get请求会自动解码什么意思?

在使用get请求传递参数时,需要依赖浏览器环境,由于我们在javascript中没有做任何操作,完全依赖浏览器进行编码后传递到后台,一旦于后台编码格式不一样,就会出现乱码。利用encodeURI()在javascript中对中文URL参数进行编码时,会和转义字符冲突,浏览器会将编码后的字符分开。会造成与原来的编码不符,第二次编码浏览器会将第一次转义的编码在转义过来,这样就和原来编码的数据一致。

「app开发代码get」get请求会自动解码什么意思?

2022年get请求参数必须编码吗?

不是必须的,编码只是为了让请求参数具有一定安全性,而不是完全的暴露出来,会有一定的风险,比如依赖注入。“app开发代码get”。

「app开发代码get」get请求参数必须编码吗?

2022年如何在开始菜单显示运行命令?

亲测有效的一种方法:

1、在键盘上按下win+R键,或在开始菜单图标上点击右键选择运行;

2、输入powershell,按下“确定”运行;

3、在窗口里输入或复制粘贴以下命令,注意只有一行:Get-AppxPackage | % { Add-AppxPackage -DisableDevelopmentMode -Register 。

2022年get函数什么意思?

get/set成员函数(访问级别通常为public)使得client端用户代码可以访问对象的内部数据结构,这会暴露类内部的实现细节。这种暴露使会得用户代码与类实现之间产生深层次的依赖关系,而这种过剩的知识将在类实现技术改变时迅速破坏相关的用户代码---涟漪效果。比如Container类输出了关于实现该类之二叉树的信息(比如,当它输出成员函数getLeftChild()与getRightChild()时),用户将被迫按照二叉树而不是容器进行思考,这将使用户代码变得复杂且难以改变。

如果Container类改变了实现结构,则用户代码将被迫进行修改(可能是大量的)。最少知识(least knowledge)原则是用于面向对象编码中降低类间耦合度的指导原则。该原则认为如果要在相互调用的类(对象)之间保持较低的耦合度,则一个对象所调用的方法应该仅仅局限于以下几个来源:类对象本身;被当作方法的参数而传递进来的对象;此方法所创建或实例化的任何对象;对象的任何组件;一个对象可以任意调用以上四类对象的方法。

唯一一类不可调用的方法来源于:通过某个对象的get成员函数所获取的间接对象的成员函数。很容易想象,当某个类拥有大量get/set成员函数时,该类本身几乎不可能提供完善的逻辑处理方法(否则也就没有必要提供这些get/set成员函数了),因此借助get成员函数获取间接对象并做进一步的处理几乎是不可避免的。因此,在有可能的情况下,类设计人员应该尽量不提供get与set成员函数。

当然“app开发代码get”,不要认为get与set成员函数总是坏的,像CORBA这样的框架都会为所有的属性自动提供get/set成员函数。真正的问题是:好的对象总会封装并在接口后面隐藏某些东西,然而get/set成员函数有时会在暗中暴露对象的秘密。只有当在类外(从用户的角度)看待这些私有数据仍“有意义”时,为私有数据设置公有的get()和set()成员函数才是合理的。

然而在许多情况下, get()/set()成员函数和公有数据一样差劲:它们仅仅隐藏了私有数据的名称,而没有隐藏私有数据本身。

本文链接:https://www.mosoapp.com/qpkf/1262.html
原标题:app开发代码get(开发app程序) - 小熊科技
本文由小熊科技网整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与我联系删除。

联系我们

在线咨询:点击这里给我发消息

微信号:18929340276

工作日:9:30-18:30,节假日休息