精华内容
下载资源
问答
  • 企业级java编程中数据结构与算法的使用理解 算法与数据结构的应用主要体现在那些方面: 我可以说体现在bai和计算机相关的各种方面吗du… 基本上没zhi有应用是不需要数据结构和算dao法的吧… 你用的电脑,操作系统:...

    企业级java编程中数据结构与算法的使用理解

    算法与数据结构的应用主要体现在那些方面:

    我可以说体现在bai和计算机相关的各种方面吗du…
    基本上没zhi有应用是不需要数据结构和算dao法的吧…
    你用的电脑,操作系统:文件管理,多进程切换,内存管理
    你用的百度知道所代表的网站应用:浏览器渲染,数据库优化
    你用来访问网络的整个基础设施:路由算法
    你玩游戏时的三维渲染,人工智能

    概念:

    1、枚举(baiEnumeration)接口虽然它本身不属du于数据结构,但它在其zhi他数据结构的范畴里应用很dao广。 枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。
    2、位集合类实现了一组可以单独设置和清除的位或标志。
    该类在处理一组布尔值的时候非常有用,你只需要给每个值赋值一"位",然后对位进行适当的设置或清除,就可以对布尔值进行操作了。
    3、向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。
    和数组一样,Vector对象的元素也能通过索引访问。
    使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。
    4、栈(Stack)实现了一个后进先出(LIFO)的数据结构。
    你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。
    当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。
    5、字典(Dictionary) 类是一个抽象类,它定义了键映射到值的数据结构。
    当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary。
    由于Dictionary类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现。
    6、哈希表
    Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。

    Java中定义数据结构如何实现:

    你用的是结构体,是数bai据结构的一种。du不能说Java里没有数据结zhi构。
    在Java里可以用类表示,dao其实Java的类在C中也可以实现,加方法指针就OK。
    数据结构是数据在计算机里面的存储,读写和组织方式,不要和结构体搞混了。再次说明,Java存在数据结构,它是计算机的基本概念。

    未完待续—

    未完待续—

    未完待续—

    未完待续—

    未完待续—
    未完待续—
    展开全文
  • 该项目是一个受企业软件的高质量标准约束的,如何构建流行的FizzBu​​zz游戏的示例。 嘶嘶声 FizzBu​​zz是一种游戏,已通过编程任务在工作面试中淘汰非程序员而广受欢迎。 转让的目的是少谈解决根据它正确下列...
  • C#是微软公司发布的一种由C和C++衍生出来的,极其类似Java的纯面向对象的高级编程语言、是运行于.NET Framework和.NET Core(完全开源,跨...以及所有C#语言特性讲解演示,帮助学员迅速达到企业级C#开发工程师的能力!
  • 理解成云游戏就行了,核心目的是以网页轻量化这种形式体验到高配置客户端才能带来的体验。所以需要思考怎么与自身行业融合,以解决某些痛点或需求。 2.使用的先决条件。 公司有企业级专线或租赁云GPU服务器。(就一...

    基于项目中实际遇到的常见需求,整理如下解决方案。

    1.为什么使用像素流?

    理解成云游戏就行了,核心目的是以网页轻量化这种形式体验到高配置客户端才能带来的体验。所以需要思考怎么与自身行业融合,以解决某些痛点或需求。

    2.使用的先决条件。

    公司有企业级专线或租赁云GPU服务器。(就一个目的:是让任何人能访问到服务器。不知道什么企业级专线?就是有固定IP地址的宽带,三大运行商咨询即可开通。ps:这里不一定要有固定IP地址,也可以完成访问,对公司来说是伪需求,故不建议研究动态地址的情况,若真有这方面需求可以一起探讨,也不复杂。)

    3.需要高配置电脑吗?

    可以但没必要。就像云计算与边缘计算一样。

    高配置电脑就类似云计算,资源高度集中模式。通常需要Quadro和Tesla等专业级显卡以支持2个以上的程序同时运行,但实际使用过程中,单一电脑会遇到性能瓶颈与网络瓶颈。

    边缘计算在这里是指通过负载均衡的方式把程序分配给不同的电脑运行。

    4.负载均衡?

    根据自定义策略以实现用户访问,数据分发到满足策略最优的电脑,可以是多个内网普通配置电脑,也可以跨越地域实现负载,比如子公司、云提供商、IDC提供商、自己家里电脑。。。。

    也就是可以实现公司0硬件投入而满足多用户访问的需求。负载策略可以自定义,目前我们写的负载均衡软件的策略是根据机器各种性能参数综合评估的。既然是不同的电脑运行,比如多个网络、异地等,宽带出口也应自定义以解决单点宽带瓶颈。

    负载均衡示例图
    在这里插入图片描述

    5.宽带瓶颈?

    三大运行商的正常策略是普通宽带,上下行不对等,像素流应用通常需要大量的上行宽带。企业级专线是上下对等的。因为专线价格比普通的高,故可以租赁若干普通宽带或异地的方式实现宽带的合理利用。一个公司多条宽带可以在企业级路由器上设置策略路由,合理解决上行通过不同线路的问题。

    6.多个应用怎么解决?

    细分可以分为,多个用户访问一个应用或者多个用户访问多个应用。这里是按需启动或预启动,有用户访问即启动,用户离开网页会自动关闭。单个服务器上可以放置若干个不同的UE4程序,启动方式通过不同的网页地址访问,由负载均衡自动分配最优服务器。像素流常用的一些参数可以通过配置文件快速配置,比较方便。

    7.使用场景:

    • 独立程序应用

    多个应用多人公网/内网访问。以上解决方案即可满足这种混合模式。并不需要在硬件上投入太多。

    • 网页应用

    像素流可以实现自定义页面与UE程序交互。前端页面主要用到的技术是webrtc。使用websocket与信令服务建立连接,然后通过信令服务配置数据中转,最终与ue程序建立webrtc连接,实现视频流与自定义数据流的通信。

    以上方案可以在不投入大量硬件资产与精力的情况下,极其快速部署。

    部分轻量化项目截图有基于自定义网页应用,也有独立程序应用:


    大桥可视化云平台,满足建造过程与运维的平台。

    在这里插入图片描述
    在这里插入图片描述

    校园三维可视化运维平台

    希望感兴趣的朋友可以讨论交流,文中若有问题非常欢迎指正。QQ:704178262

    展开全文
  • 关于java极简历史介绍:1995年有sun公司开发,2009年被oracle公司收购 ... javaee:企业级应用 网站的开发 javame:嵌入式的开发,手机,做手机游戏1.JDK的安装 下载 安装(可在oracle官网www.o

    关于java极简历史介绍:1995年有sun公司开发,2009年被oracle公司收购
    java又可以分为三类se,ee,me,这三类概念我理解的也不深刻,就简单介绍一下:
    javase:基础部分,可以做出类似QQ的软件
    javaee:企业级应用 网站的开发
    javame:嵌入式的开发,手机,做手机游戏

    1.JDK的安装
    下载 安装(可在oracle官网www.oracle.com下载)
    配置环境变量
    path:%JAVA_HOME%\bin
    JAVA_HOME:D:\JAVA\jdk1.8.0(你的安装目录)
    配置了环境变量以后,当你执行DOS命令的时候,系统就会在path指定的路径中寻找该命令对应的可执行文件

    2.JVM JDK JRE IDE
    JVM:java virtual machine java虚拟机
    JDK:java development kit 开发工具包
    JRE:java runtime environment 运行时环境
    他们三者的关系是:
    这里写图片描述
    IDE:集成开发环境,是一类软件,比如eclipse,myeclipse,将程序开发环境和程序调试环境集合在一起

    3.java程序运行过程
    一个java程序要跑起来必须进过 编译和执行 这两个步骤
    编译:是把java源文件编译成class文件 对应DOS命令为 :javac Hello.java(Hello是类名)
    运行:运行class文件 对应的DOS命令是 :java Hello
    需要注意的是,在执行DOS命令前,需要进入java文件所在目录

    4.标识符
    标识符是以字母(java采用unicode字符集,所以可以有汉字,日文,阿拉伯文等)、下划线、美元符开头
    标识符由字母、数字、下划线,美元符,组成的字符串,标识符区分大小写,长度不受限制,不能为关键字
    在程序中,标识符可用作变量名、方法名、接口名、类名等。

    5.变量(variable)
    变量定义 :声明+初始化,在java中变量的命名遵循骆驼式命名法,比如myAge
    成员变量:(field 也叫实例变量)在类中定义,用来描述对象将有什么属性,从属于对象
    如果我们没有手动初始化,系统会自动初始化,初始化规则:
    数字:0, 0.0;布尔:false;char:\u0000;String:null;
    静态变量:(也叫做类变量)就是声明为静态属性的变量,static关键字修饰,可直接用类名访问,从属于类
    系统也会自动初始化,初始化规则同成员变量
    局部变量:在语句块(就是一对{}包括起来的语句)或者方法中定义,临时保存数据,在使用前必须先声明和初始化
    final修饰变量:即常量,只可初始化一次,一般用大写

    6.数据类型
    基本数据类型:
    数字:
    整数:这里写图片描述
    浮点数:float(4个字节) double(8个字节)
    字符:char(2个字节)
    布尔:boolean(1位)
    引用类型:(4个字节)实际引用堆里面的一个区域的地址
    比如:数组,对象,接口(不可以new接口,但可以作为变量的类型)
    类型转换:
    byte,short,char可以自动转为int
    long转为int就需要强制转型

    7.表达式
    类型的自动提升:
    如果表达式中有long(double),结果就是long(double)
    强制转型:

    int a,c;
    long b;
    c=(int)(a*b)

    8.运算符
    算数运算符:+,-,*,/,%,++,–

    int a=3;        int a=3;
    int b=a++;      int b=++a;
    b=3;a=4;        b=4;a=4;

    关系运算符:〈,〉,==
    赋值运算符:=
    逻辑运算符:&&,||,!
    位运算符:~(取反),&(按位与),|(或),^(异或),<<(左移),>>(右移)
    右移一位相当于除2取商,左移一位相当于乘2
    扩展运算符:比如a+=b就是 a=a+b
    三目运算符:boolean?A!B,true返回A,false返回B

    9.控制语句
    分支语句: if语句,switch语句
    其中switch语句中的case具有穿透性,这也就是为什么要加入break语句,不然它会一直执行下去,有时候为了是代码简洁, 可以将功能相同的case语句合并起来,在JDK7种switch()括号内的内容可以为字符串。
    循环语句: for,while,do…while(使用较少,循环体至少执行一次)
    跳转语句: break(强制终止整个循环),continue(跳过循环体中剩余语句执行下一次循环),return(方法体中常用来返回值或对象)
    java中没有goto语句,但加标签的continue还是可以达到goto的效果,goto仍作为java的一个保留字,只是没有功能了

    //带标签的continue语句(求1到100内的质数)
    outer:for(int i=1;i<=100;i++){
        for(int j=2;j<i/2;j++){
            if(i%j==0){
                continue outer;
            }
        }
        System.out.println(i+" ");
    }

    10 数组
    关于数据首先这么几点要了解,第一,数组是相同分数据类型的有序集合,这里的数据类型可以是任意类型,第二,数组也是对象,数组元素相当于对象的成员变量,第三,数组长度确定不可变

    数组的声明:int[] score 数据类型 - 数组名
    为数组分配空间:score=new int[5] 数组名-数据类型-数组长度
    要初始化一个数组有以下几种方法:

    //默认初始化
    int[] scores=new int[5];
    //静态初始化
    int[] scores={78,91,84,86,12};
    //二维数组初始化
    int[][] a=new int[3][];
    int[][] a={{1,2},{3,4,0,9,},{5,6,7}}; 

    二维数组的内存分析图:(地址都是瞎编的)
    这里写图片描述

    数组的拷贝:System.arraycopy(s,0,sBack,0,s.length);
    从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束

    11.Array类
    Array类是java提供的一个工具类,位于java.util包下,封装了一些方法,用来直接操作数组,比如实现数组中的排序。
    注意你如果要使用这个类,一定导入

    //导入
    import.java.util.Arrays;
    //自动排序,升序
    Arrays.sort(scores);
    //数组转化为字符串
    Arrays.toString(数组名);
    //打印数组可以用foreach,for语句的加强版,jdk5.0以后新加的,这里的hobbys是String类型的数组
    for(String hobby:hobbys){
        System.out.println(hobby);
    }

    12.对象的进化史(行最后是老师自己起的名字,帮助理解,不权威)
    基本数据类型阶段:数据少 ,又叫无数据管理时代
    数组:数据变多,将同类型的数据放在一起,对数据进行弱管理
    结构体:不仅仅可以放同类型的,也可以放不同类型的数据,强管理
    对象/类:数据变多,类型变复杂,行为也变复杂了,超强管理

    13.面向对象编程(OOP)
    Object Oriented Programming
    它的实质就是,以类的方式组织代码,以对象的方式封装数据

    14.方法重载
    Overload
    第一,必须在同一个类中
    第二,方法名一致
    第三,方法参数不同,参数顺序和类型不同
    第四,与方法修饰符或返回值无关

    15.方法重写
    方法的重写是建立在有继承,有子类和父类的基础上的
    子类不满意父类的方法,可以进行重写,覆盖父类的方法,在调用的时候,会优先调用子类的方法
    方法重写要点:方法名保持一致;子类权限修饰符可以大于等于父类的;子类返回值类型小于等于父类的类型;
    子类声明异常不能超过父类的类型

    16.对象和类
    An object is an instance of a class
    在java中万事万物皆对象,客观存在的事物皆为对象,对象是类的实例化
    类是一个模子,它确定对象将有的属性(对象所具有的性质)和方法(对象执行的操作),它是用于描述同一类型对象的一个抽象概念,所有类都有一个Object父类
    对象和类的关系:特殊到一般,具体到抽象

    //代码示例
    public class Hello{
        //属性
        public String str;
        //方法
        public void getStr(){
            System.out.println(str);
        }
        //构造方法,无返回类型,参数可不同,可重载,方法名必须和类名一致,通过new关键字调用
        public Hello(){
            //构造方法的第一句,无论你写不写,它是直接调用父类的构造器,在这里是Object父类
            super();
        }
    }
    //main函数中新建对象,
    Hello h=new Hello();
    h.str="Hello World!";
    h.getStr(); 
    }

    17.关键字-this
    在普通方法中,指向调用本方法的对象;在构造方法中,指向正要初始化的对象;也可以用来调用其他的构造方法;
    要注意的是,this不能用于static方法中

    18.关键字-static
    用static关键字修饰成员变量(方法)—-静态成员变量(方法),可直接用类名访问(从属于类)
    在静态方法中可以调用静态成员,但不可直接调用非静态成员,可以调用静态方法,但是不可直接调用非静态方法。
    静态初始块最先被执行,在类被加载时仅执行一次,语法如下:

    static{
        //最先执行的代码
    }

    执行顺序:静态初始化,普通初始化,构造方法

    java中static和private的用法
    1.private 在定义成员变量或者方法时,只有在本类才可以调用,用static修饰的也可以用private修饰。
    private static int m=1;
    2.static修饰的成员变量也叫类变量或者全局变量,无论创建多少对象,static修饰变量仅仅占用一块内存
    static优先于实例变量

    19.关键字-final
    修饰类:该类不允许被继承
    修饰方法:方法不允许被子类重写,但是可以被重载
    修饰属性:类的初始化属性必须有值,或者在构造方法中赋值
    修饰变量:常量,只可以赋一次值

    20.关键字-super
    在对象内部使用,可代表父类对象
    子类调用构造方法时,即使没有super();,系统也会默认调用父类的构造方法,且必须在子类构造的第一行。

    21.使用访问控制符
    其中yes表示可以访问
    这里写图片描述

    22.面向对象三大特征–封装
    通过使用上述[21]中的访问控制符,来实现方法和属性的封装。
    封装的追求的是,高内聚:类的内部数据操作细节自己完成,不允许外部干涉
    低耦合:仅仅暴露少量的方法给外部进行使用
    隐藏对象的内部复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可扩展性,维护性
    比如:在定义类中的属性时,都将其设置为private,然后添加相应的getset方法来修改得到这个属性

    public class Hello{
        private int year;
        public int getYear(){
            return year;
        }
        public void setYear(int year){
            this.year=year;
        }
    }

    23.面向对象三大特征–继承
    继承最大的优点就是提高了代码的复用性,子类可以拥有父类的所有方法和属性,其中private修饰的无效;
    子类不满意父类的方法,也可以进行重写,当子类重写了父类的方法时,就会优先使用子类的方法。
    Object类:是所有类的根基类,共同父类,常用方法有,toString,equals,hashcode等

    继承内存分析:
    这里写图片描述
    这里写图片描述

    java和c++不同的地方是,java是单继承,而c++是多继承。

    24.面向对象三大特征–多态
    第一,多态可以理解为,程序的最终状态只有在执行的过程中才被决定而非编译期间就决定了,这对于大型系统来说可以提高系统的灵活性和扩展性。
    第二,在java中实现多态时,引用变量有两种类型
    编译型类型:一个父类(由声明的类型决定)
    运行时类型:由实际的对象类型决定,具体是哪个子类就是哪个子类
    第三,多态存在的3个必要条件:继承,方法的重写,父类引用指向子类对象

    CallBack(钩子函数,多态的应用):

    //父类
    public class MyFrame{
        public void paint(){
            ...
        }
    }
    //主函数
    public class PaintFrame{
        public static void drawFrame(MyFrame f){
            f.paint();
        }
        public static void main(String[] args){
            drawFrame(new GameFrame());
        }
    }
    //子类
    public class GameFrame extends MyFrame{
        public void paint(){
            ...
        }
    }

    25.Java中的字符串类
    String类:不可变字符序列
    “==”和“equals()”有什么区别
    == :判断两个字符串在内存中首地址是否相同,即判断时候是同一个字符串对象
    equals():比较存储在两个字符串中对象是否一致
    StringBuilder :可变,效率高,线程不安全
    StringBuffer:可变,效率地,线程安全
    StringBuilder和StringBuffer都继承了AbstractStringBuilder

    //append 追加内容到末尾,若空间不够大会自动扩容
    StringBuilder gh=new StringBuilder("a");
    for(int i=0;i<10;i++){
        gh.append(i);
    }
    
    //insert 插入指定位置
    gh.insert(2,"s");
    
    //toString 转化为String对象
    gh.toString();
    
    //length长度
    int lengeh=gh.length();

    26.时间处理相关类
    可视化日历

    java.util.Date
    java.text.SimpleDateFormat
    java.util.Calendar
    
    //用format()方法转变日期格式
    Date d=new Date();
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String today=sdf.format(d);
    
    //用parse()将文本转换为日期
    String day="2013年2月12日 10:30:20";
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date d=sdf.parse(day);
    
    //getTime 返回一个long类型的数
    d.getTime();
    
    //Calendar转化为Date
    Calendar c=new GregorianGalendar();
    c.set(year,month,date,hourOfDay,minutes,second);
    //Calendar c=Calendar.getInatance();
    Date now=c.getTime();

    27.抽象类
    用abstract修饰的类即为抽象类,一个抽象类也可以继承另一个抽象类,通过抽象类可以避免子类设计的随意性,可以做到严格限制子类的设计,使子类之间更加通用,抽象方法的意义在于分离方法的设计和实现
    抽象类的要点:
    有抽象方法的类只能定义抽象类
    抽象类不能实例化,不能用new来实例化
    抽象类只能用来继承
    抽象方法必须被子类重写

    语法:

    public abstract class Hello{
        //抽象方法无方法体
        public abstract void say();
    }

    28.接口
    接口是特殊的抽象类=全局变量+公共抽象方法
    类可以实现接口,一个类可以实现多个接口,接口之间可以多继承

    语法:

    //定义接口
    [修饰符] abstract interface Haha [extends 父接口1,父接口2]{
        public static final=常量;
        public abstract 方法(方法中不可有实体);
    }
    //类实现接口
    public class Hah implements Haha{
        public abstract 方法(){
            ...
        }
    }

    29.内存机制
    栈:存放局部变量,不可被多个线程共享,系统自动分配
    堆:存放对象,可以被多个线程共享,存在资源竞争问题
    方法区:类的信息,代码,静态变量,字符串常量等,可被多个线程共享

    30.垃圾回收机制GC
    Garbage Collection
    第一,程序员不能调用垃圾回收器
    第二,可以通过System.gc();通知GC运行,但java规范不会立即执行
    第三,finalize方法,属于Object类,java提供给程序员用来释放对象或资源方法,一般不调用

    java和c++垃圾回收的不同
    java:GC自动回收
    c++:程序员通过析构函数来删除对象

    注意:上述的垃圾指没有使用的对象,也有解释为,没有引用的对象。

    31.异常
    java异常是java提供的用于处理程序中的错误的机制,采用面向对象的方式来处理异常
    抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,把异常提交给JRE
    捕获异常:JRE得到该异常后,寻找相应的代码来处理异常,JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止

    //防止空指针异常
    Computer c=null;
    if(c!=null){
        c.start();
    }
    
    //ClassCastException
    if(obj instanceof Man){
        Man m=(Man)obj;
    }
    展开全文
  • 虚拟数字人是综合多模态AI能力,结合图像视觉、情绪生成、语音克隆、语义理解等多种AI技术,广泛应用于媒体新闻主播、金融客服、虚拟游戏等众多场景。 数字人在行业中的应用: 二、HMS ML Kit数字人 HMS ML Kit数字...

    一、数字人介绍

    虚拟数字人是综合多模态AI能力,结合图像视觉、情绪生成、语音克隆、语义理解等多种AI技术,广泛应用于媒体新闻主播、金融客服、虚拟游戏等众多场景。

    数字人在行业中的应用:

    在这里插入图片描述

    二、HMS ML Kit数字人

    HMS ML Kit数字人是依托华为公司强大的图像处理、语音合成、声音克隆、语义理解等AI核心技术,全新推出的综合多模态AI能力。面向教育、新闻、多媒体制作企业,提供高质量、低成本、创新体验的内容创作模式。对比其他厂商数字人,HMS ML Kit数字人的优势明显:

    支持超高清4K影院级效果

    • 支持大屏展示,全身细节纹理均达到同等清晰度

    • 生成与真实背景图像无缝融合,高清分辨率下无融合痕迹

    • 嘴唇细节、口红反光分明、纹理清晰

    • 牙齿清晰可见,齿缝纹理清晰真实

    合成效果逼真度

    • 真实还原牙齿(非贴图)、嘴唇、甚至口红反光细节。

    • 真实还原面部光照、对比度、阴影、酒窝等细节。

    • 嘴部皮肤生成纹理与真实纹理无缝对接。

    • 相对3D主播,无动画生硬感。

    在这里插入图片描述

    三、HMS ML Kit数字人生成数字人视频展示

    在这里插入图片描述

    从上图中我们可以看到HMS ML Kit数字人超高清的真人视频效果,不仅口齿清晰,ML Kit数字人还对一些细节的掌控更加优秀:嘴唇细节、口红反光细节、更加真实的面部发音以及细致的面部光照效果。

    四、HMS ML Kit数字人服务集成

    4.1 服务集成过程

    4.1.1 提交需要生成的文本信息

    调用【定制文本转虚拟数字人视频接口】,将一些配置(config)和需要转化的文本(data)通过该接口传输至后端进行处理:首先,要对传输进来的data的文本字符长度进行校验,中文文本最大字符长度不得超过1000,英文文本单个字符长度不得超过3000,英文文本单词长度不得超过3000,对于传输进来的config做非空校验,然后将config和data提交,将文本文字转化为音频文件。

    4.1.2 异步执行的定时任务

    会有一个异步执行的定时任务处理提交的数据,调用TTS提供的算法,将文本文件转化为视频文件,并且将上一步得到的音频文件与视频文件合成起来。

    4.1.3 查询文本是否转化成功

    调用【文本转虚拟数字人视频结果查询接口】,实时查询异步执行的文本转视频是否已经执行完毕;如果执行完毕,将会返回一个生成视频的链接。

    4.1.4 根据视频链接访问视频文件

    根据【文本转虚拟数字人视频结果查询接口】所返回的视频链接,访问生成的视频文件。

    4.2 服务集成的主要接口

    4.2.1 定制文本转虚拟数字人视频接口

    URL
    http://10.33.219.58:8888/v1/vup/text2vedio/submit

    请求参数

    在这里插入图片描述

    主要功能
    输入文本转换成虚拟数字人视频接口,此接口为异步接口,当前版本转换需要一定时间,采用离线方法,最终转换结果需要通过【文本转虚拟数字人视频结果查询接口】查询。如果提交的文本已经合成过,直接返回播放URL。

    主要逻辑
    根据前端页面所传输的需要合成的文本数据data,根据config所提供的一些配置,将文本文字转化为音频文件。异步执行多线程,根据所提供的算法模型生成合乎发音的视频文件,然后将视频文件与音频文件合成起来,生成所需的数字人视频。如果提交的文本已经合成过,直接返回播放URL。

    4.2.2 文本转虚拟数字人视频结果查询接口

    URL
    http://10.33.219.58:8888/v1/vup/text2vedio/query

    请求参数

    在这里插入图片描述

    主要功能

    根据提交文本ID批量查询转换状态。

    主要逻辑
    根据前端页面所传输的合成的文本数据ID列表,即textIds字段,查询所得到的视频文件合成的任务状态,将得到的状态结果存在集合,作为返回参数,插入到返回的请求当中。如果请求的文本已合成过,直接返回播放URL。

    4.2.3文本转虚拟数字人视频批量下线接口

    URL
    http://10.33.219.58:8888/v1/vup/text2vedio/offline

    请求参数

    在这里插入图片描述

    主要功能
    根据提交文本ID批量下线。

    主要逻辑
    根据前端页面所传输的合成的文本数据ID数组,即textIds字段,对该数组内所有ID对应的视频进行下线设置,改变其状态为下线状态,同时删除视频文件,被下线的视频无法播放和观看。

    4.3 HMS ML Kit数字人服务实现的主要功能

    HMS ML Kit数字人服务的功能非常强大:

    1. 双语发音:由于目前系统支持中文发音和英文发音,可以传输中文文本和英文文本作为发音数据。
    2. 多个虚拟主播形象:支持不同虚拟主播发音,目前系统里配置了4名虚拟主播,分别为:中文女士发音,上海日报,英文女士发音,英文男士发音。
    3. 画中画视频播放:除了对虚拟主播的设置以外,视频播放支持画中画即小窗播放视频,在画中画模式播放视频时,视频窗口随屏幕移动,可以一边查看文本,一边播放视频,视频窗口还可以拖拽到任意位置,以至于不遮挡文本位置。
    4. 可调节的语速,音量,音调:可以满足不同需求的发音速度,发音音量以及发音音调。
    5. 多背景设置:可以设置不同的虚拟主播背景,目前系统内置了透明背景、绿幕、科技主题三种背景,还可以通过上传图片的方式自定义自己喜欢的背景进行设置。
    6. 字幕设置:系统可以自动配置字幕,可以设置中文字幕,英文字幕或者双语字幕。
    7. 多布局设置:可以由参数调节虚拟主播出现在屏幕当中的位置:左测,右侧,屏幕中间;以及调节虚拟主播人物大小和展示全身或半身。在选择虚拟主播出现在屏幕当中的位置为左边或者右边的时候,还可以设置台标和台标出现的位置,以及在视频当中显示需要播放的视频文件,做到视频画中画的效果,以还原真实的新闻播报的场景。

    视频画中画展示:

    在这里插入图片描述

    五、结后语

    作为一名开发者来说,在使用HMS ML Kit数字人生成一个视频之后,尤其是视频画中画的功能,令我叹为观止。这切切实实地还原了真实主播所处的新闻播报场景,不禁让人畅想,在完善化的数字人推行下,是否可以完全替代真人播报呢?

    更详细的开发指南参考华为开发者联盟官网

    https://developer.huawei.com/consumer/cn/hms/huawei-mlkit


    原文链接: https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202351501845870559&fid=18
    作者:say hi

    展开全文
  • 达内java培训目录

    2016-02-06 01:03:30
    培养良好的企业级编程习惯。 Java面向对象 面向对象特性:封装、继承、多态等,面向对象程序设计,基础设计模式等。 掌握面向对象的基本原则以及在编程实践中的意义;掌握Java面向对象编程基本实现原理。 实训项目一...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
    内容索引:JAVA源码,游戏娱乐,魔方,网页游戏  Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
    内容索引:JAVA源码,游戏娱乐,魔方,网页游戏  Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考...
  • 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏  Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
    内容索引:JAVA源码,游戏娱乐,魔方,网页游戏  Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考...
  • Java吃豆子游戏源代码 6个目标文件 内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中...
  • Java吃豆子游戏源代码 6个目标文件 内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中...
  • java源码包

    2015-12-01 16:29:37
    内容索引:JAVA源码,游戏娱乐,魔方,网页游戏  Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性...
  • Windows Communication Foundation(WCF),它把Web 服务的概念扩展和改进为一种企业级通信技 术。本书最后一章是第27 章,介绍了Windows Workflow Foundation(WF),它允许在应用程序中执 行工作流功能,因此可以定义...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    内容索引:JAVA源码,游戏娱乐,魔方,网页游戏  Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性...
  • Android程序设计基础

    热门讨论 2013-08-03 16:28:04
     Android作为谷歌公司企业发展战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。作为一款多方倾力打造的平台,Android具有许多优点:实际应用程序运行速度快;开发限制少,平台...
  • ffead-cpp :企业应用程序开发框架。 Folly:由Facebook开发和使用的开源C++库。 FunctionalPlus:C++ 的函数式编程库,编写简洁易读的C++代码。 GLib :GLib提供用C编写的库和应用的核心代码块。 JUCE :...
  • 它可以帮助企业收集、编入索引并智能化地分析由网络、应用程序以及移动设备等产生的机器数据,并最终帮助企业决策者做出准确的判断。本书集合了各种实用方法,目的是给读者提供指导和实用知识,以便读者掌握Splunk ...
  • VirtualApp(以下简称:VA)是一款运行于Android系统的沙盒产品,可以理解为轻量的“Android虚拟机”。其产品形态为高可扩展,可定制的集成SDK,您可以基于VA或者使用VA定制开发各种看似不可能完成的项目。VA目前被...
  • MyEclipse企业级工作平台MyEclipse Enterprise Workbench ,简称MyEclipse. 是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的...
  • 先解释一下企业级应用:简单的说是大规模的应用,一般使用人数较多,数据量较大, 对系统的稳定性、安全性、可扩展性和可装配性等都有比较高的要求 这是目前Java应用最广泛的一个领域,几乎一枝独秀。包括各种行业应用,...
  • Egret 的 童话 与 现实

    2021-01-03 14:33:25
    配合强大的IDE可以更好的开发复杂的企业级项目,尤其那种大型团队,成员众多,水平良莠不齐balabalabalabala…… 他们说的就跟如今PHP Python Ruby 和JS没开发过大型项目似的…… 另外,...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
  • Java资源包01

    2016-08-31 09:16:25
    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
  • java开源包101

    2016-07-13 10:11:08
    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
  • 自 2013 年起立项 7 年多来,我们一直保持着项目的持续更新,并将完整的源代码以及设计思想毫无保留地分享给大家,希望有更多的人可以从中受益,理解并传播开源的精神,一同助力中国开源事业!感恩一路上给我们提供...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

企业级游戏理解