精华内容
下载资源
问答
  • Spark SQL在不同存储格式下的性能对比 本文测试的目的是用来对比 Spark 三种存储格式txt、parquet、ya100的性能差异。 因机器环境以及配置的不同,测试结果可能略有差异,该测试报告仅对笔者的软硬件环境负责。
  • 进行了对比分析 分析环境小米?2SC APP?版本 腾讯新闻 搜狐新闻 网易新闻 今日头条 二需求分析 简单的说移动新闻客户端是在传统门户传统纸媒 等?PC?时代演变到现在移动时代的二代产品带有传统门户 用户获取最新
  • https://www.cnblogs.com/renmengkai/p/9183775.html
    https://www.cnblogs.com/renmengkai/p/9183775.html
    展开全文
  • Jackson对于复杂类型的bean转换Json,转换的json格式不是标准的Json格式 3.Google的Gson Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来, 但自从在2008年五月公开...

    转载自地址:http://www.cnblogs.com/kunpengit/p/4001680.html

    一 、各个JSON技术的简介和优劣
    1.json-lib
    json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,
    包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar,
    对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如一个类里面会出现另一个类的list或者map集合,json-lib从json到bean的转换就会出现问题。
    json-lib在功能和性能上面都不能满足现在互联网化的需求。
    2.开源的Jackson
    相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。
    而且Jackson社区相对比较活跃,更新速度也比较快。
    Jackson对于复杂类型的json转换bean会出现问题,一些集合Map,List的转换出现问题。
    Jackson对于复杂类型的bean转换Json,转换的json格式不是标准的Json格式
    3.Google的Gson
    Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来,
    但自从在2008年五月公开发布第一版后已被许多公司或用户应用。
    Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。
    而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。
    类里面只要有get和set方法,Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。
    Gson在功能上面无可挑剔,但是性能上面比FastJson有所差距。
    4.阿里巴巴的FastJson
    Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。
    无依赖,不需要例外额外的jar,能够直接跑在JDK上。
    FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。
    FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。
    ---------------------------------------------------------
    综上4种Json技术的比较,在项目选型的时候可以使用Google的Gson和阿里巴巴的FastJson两种并行使用,
    如果只是功能要求,没有性能要求,可以使用google的Gson,
    如果有性能上面的要求可以使用Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean
    二、Google的Gson包的使用简介。
    Gson类:解析json的最基础的工具类

    JsonParser类:解析器来解析JSON到JsonElements的解析树
    JsonElement类:一个类代表的JSON元素
    JsonObject类:JSON对象类型
    JsonArray类:JsonObject数组
    TypeToken类:用于创建type,比如泛型List<?>

    (1)maven依赖

    com.google.code.gson
    gson
    2.2.4

    (2)基础转换类

     1 public class Book {
     2     private String id;
     3     private String name;
     4 
     5     public Book() {
     6         super();
     7     }
     8 
     9     public String getId() {
    10         return id;
    11     }
    12 
    13     public void setId(String id) {
    14         this.id = id;
    15     }
    16 
    17     public String getName() {
    18         return name;
    19     }
    20 
    21     public void setName(String name) {
    22         this.name = name;
    23     }
    24 }
    25 
    26 public class Student {
    27     private String name;
    28     private int age;
    29     private String sex;
    30     private String describe;
    31     private Set books;
    32 
    33     public Student() {
    34         super();
    35     }
    36 
    37     public String getName() {
    38         return name;
    39     }
    40 
    41     public void setName(String name) {
    42         this.name = name;
    43     }
    44 
    45     public int getAge() {
    46         return age;
    47     }
    48 
    49     public void setAge(int age) {
    50         this.age = age;
    51     }
    52 
    53     public String getSex() {
    54         return sex;
    55     }
    56 
    57     public void setSex(String sex) {
    58         this.sex = sex;
    59     }
    60 
    61     public Set getBooks() {
    62         return books;
    63     }
    64 
    65     public void setBooks(Set books) {
    66         this.books = books;
    67     }
    68 
    69     public String getDescribe() {
    70         return describe;
    71     }
    72 
    73     public void setDescribe(String describe) {
    74         this.describe = describe;
    75     }
    76 }

    (3)bean转换json

    1 Gson gson = new Gson();
    2 String json = gson.toJson(obj);
    3 //obj是对象

    (4)json转换bean

    1 Gson gson = new Gson();
    2 String json = "{\"id\":\"2\",\"name\":\"Json技术\"}";
    3 Book book = gson.fromJson(json, Book.class);

    (5)json转换复杂的bean,比如List,Set

    将json转换成复杂类型的bean,需要使用TypeToken

    1 Gson gson = new Gson();
    2 String json = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
    3 //将json转换成List
    4 List list = gson.fromJson(json,new TypeToken<LIST>() {}.getType());
    5 //将json转换成Set
    6 Set set = gson.fromJson(json,new TypeToken<SET>() {}.getType());

    (6)通过json对象直接操作json以及一些json的工具

    a)格式化Json

    1 String json = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
    2 Gson gson = new GsonBuilder().setPrettyPrinting().create();
    3 JsonParser jp = new JsonParser();
    4 JsonElement je = jp.parse(json);
    5 json = gson.toJson(je);

    b)判断字符串是否是json,通过捕捉的异常来判断是否是json

     1 String json = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
     2     boolean jsonFlag;try
     3     {
     4         new JsonParser().parse(str).getAsJsonObject();
     5         jsonFlag = true;
     6     }catch(
     7     Exception e)
     8     {
     9         jsonFlag = false;
    10     }

    c)从json串中获取属性

     1 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
     2     String propertyName = 'id';
     3     String propertyValue = "";try
     4     {
     5         JsonParser jsonParser = new JsonParser();
     6         JsonElement element = jsonParser.parse(json);
     7         JsonObject jsonObj = element.getAsJsonObject();
     8         propertyValue = jsonObj.get(propertyName).toString();
     9     }catch(
    10     Exception e)
    11     {
    12         propertyValue = null;
    13     }

    d)除去json中的某个属性

    1 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 String propertyName = 'id';
    3 JsonParser jsonParser = new JsonParser();
    4 JsonElement element = jsonParser.parse(json);
    5 JsonObject jsonObj = element.getAsJsonObject();
    6 jsonObj.remove(propertyName);
    7 json = jsonObj.toString();

    e)向json中添加属性

    1 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 String propertyName = 'desc';
    3 Object propertyValue = "json各种技术的调研";
    4 JsonParser jsonParser = new JsonParser();
    5 JsonElement element = jsonParser.parse(json);
    6 JsonObject jsonObj = element.getAsJsonObject();
    7 jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
    8 json = jsonObj.toString();

    f)修改json中的属性

    1 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 String propertyName = 'name';
    3 Object propertyValue = "json各种技术的调研";
    4 JsonParser jsonParser = new JsonParser();
    5 JsonElement element = jsonParser.parse(json);
    6 JsonObject jsonObj = element.getAsJsonObject();
    7 jsonObj.remove(propertyName);
    8 jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
    9 json = jsonObj.toString();

    g)判断json中是否有属性

    1 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 String propertyName = 'name';
    3 boolean isContains = false ;
    4 JsonParser jsonParser = new JsonParser();
    5 JsonElement element = jsonParser.parse(json);
    6 JsonObject jsonObj = element.getAsJsonObject();
    7 isContains = jsonObj.has(propertyName);

    h)json中日期格式的处理

    1 GsonBuilder builder = new GsonBuilder();
    2 builder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    3 Gson gson = builder.create();

    然后使用gson对象进行json的处理,如果出现日期Date类的对象,就会按照设置的格式进行处理

    i)json中对于Html的转义

    1 Gson gson = new Gson();
    2 //这种对象默认对Html进行转义,如果不想转义使用下面的方法
    3 GsonBuilder builder = new GsonBuilder();
    4 builder.disableHtmlEscaping();
    5 Gson gson = builder.create();

    三、阿里巴巴的FastJson包的使用简介。

    (1)maven依赖

    com.alibaba
    fastjson
    1.1.22

    (2)基础转换类
    同上
    (3)bean转换json
    将对象转换成格式化的json
    JSON.toJSONString(obj,true);
    将对象转换成非格式化的json
    JSON.toJSONString(obj,false);
    obj设计对象
    对于复杂类型的转换,对于重复的引用在转成json串后在json串中出现引用的字符,比如 $ref":"$[0].books[1]

    1 Student stu = new Student();
    2     Set books = new HashSet();
    3     Book book = new Book();books.add(book);stu.setBooks(books);
    4     List list = new ArrayList();
    5     for(int i = 0;i<5;i++)
    6         list.add(stu);
    7     String json = JSON.toJSONString(list, true);

    (4)json转换bean

    1 String json = "{\"id\":\"2\",\"name\":\"Json技术\"}";
    2 Book book = JSON.parseObject(json, Book.class);

    (5)json转换复杂的bean,比如List,Map

    1 String json = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
    2 //将json转换成List
    3 List list = JSON.parseObject(json,new TypeReference<ARRAYLIST>(){});
    4 //将json转换成Set
    5 Set set = JSON.parseObject(json,new TypeReference<HASHSET>(){});

    (6)通过json对象直接操作json

    a)从json串中获取属性

    1 String propertyName = 'id';
    2 String propertyValue = "";
    3 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    4 JSONObject obj = JSON.parseObject(json);
    5 propertyValue = obj.get(propertyName));

    b)除去json中的某个属性

    1 String propertyName = 'id';
    2 String propertyValue = "";
    3 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    4 JSONObject obj = JSON.parseObject(json);
    5 Set set = obj.keySet();
    6 propertyValue = set.remove(propertyName);
    7 json = obj.toString();

    c)向json中添加属性

    1 String propertyName = 'desc';
    2 Object propertyValue = "json的玩意儿";
    3 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    4 JSONObject obj = JSON.parseObject(json);
    5 obj.put(propertyName, JSON.toJSONString(propertyValue));
    6 json = obj.toString();

    d)修改json中的属性

    1 String propertyName = 'name';
    2 Object propertyValue = "json的玩意儿";
    3 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    4 JSONObject obj = JSON.parseObject(json);
    5 Set set = obj.keySet();
    6 if(set.contains(propertyName))
    7   obj.put(propertyName, JSON.toJSONString(propertyValue));
    8 json = obj.toString();

    e)判断json中是否有属性

    1 String propertyName = 'name';
    2 boolean isContain = false;
    3 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    4 JSONObject obj = JSON.parseObject(json);
    5 Set set = obj.keySet();
    6 isContain = set.contains(propertyName);

    f)json中日期格式的处理

    1 Object obj = new Date();
    2 String json = JSON.toJSONStringWithDateFormat(obj, "yyyy-MM-dd HH:mm:ss.SSS");

    使用JSON.toJSONStringWithDateFormat,该方法可以使用设置的日期格式对日期进行转换


    三、json-lib包的使用简介。
    (1)maven依赖

    net.sf.json-lib
    json-lib
    jdk15
    2.2.2


    commons-beanutils
    commons-beanutils
    1.8.3


    commons-collections
    commons-collections
    3.2


    commons-lang
    commons-lang
    2.6


    commons-logging 
    commons-logging 
    1.1.1 


    net.sf.ezmorph
    ezmorph
    1.0.6

    (2)基础转换类
    同上
    (3)bean转换json
    a)将类转换成Json,obj是普通的对象,不是List,Map的对象

    1 String json = JSONObject.fromObject(obj).toString();

    b)将List,Map转换成Json

    1 String json = JSONArray.fromObject(list).toString();
    2 String json = JSONArray.fromObject(map).toString();

    (4)json转换bean

    1 String json = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 JSONObject jsonObj = JSONObject.fromObject(json);
    3 Book book = (Book)JSONObject.toBean(jsonObj,Book.class);

    (5)json转换List,对于复杂类型的转换会出现问题

     1 String json = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"Java技术\"}]";
     2 JSONArray jsonArray = JSONArray.fromObject(json);
     3 JSONObject jsonObject;
     4 T bean;
     5 int size = jsonArray.size();
     6 List list = new ArrayList(size);
     7 for(int i = 0;i<size;i++){
     8     jsonObject = jsonArray.getJSONObject(i);
     9     bean = (T) JSONObject.toBean(jsonObject, beanClass);
    10     list.add(bean);
    11 }

    (6)json转换Map

     1 String jsonString = "{\"id\":\"1\",\"name\":\"Json技术\"}";
     2 JSONObject jsonObject = JSONObject.fromObject(jsonString);
     3 Iterator keyIter = jsonObject.keys();
     4 String key;
     5 Object value;
     6 Map valueMap = new HashMap();
     7 while(keyIter.hasNext()){
     8     key = (String) keyIter.next();
     9     value = jsonObject.get(key).toString();
    10     valueMap.put(key, value);
    11 }

    (7)json对于日期的操作比较复杂,需要使用JsonConfig,比Gson和FastJson要麻烦多了

    创建转换的接口实现类,转换成指定格式的日期

     1 class DateJsonValueProcessor implements JsonValueProcessor {
     2     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";
     3     private DateFormat dateFormat;
     4 
     5     public DateJsonValueProcessor(String datePattern) {
     6         try {
     7             dateFormat = new SimpleDateFormat(datePattern);
     8         } catch (Exception ex) {
     9             dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
    10         }
    11     }
    12 
    13     public Object processArrayValue(Object value, JsonConfig jsonConfig) {
    14         return process(value);
    15     }
    16 
    17     public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
    18         return process(value);
    19     }
    20 
    21     private Object process(Object value) {
    22         return dateFormat.format[1];
    23         Map<STRING, DATE> birthDays = new HashMap<STRING, DATE>();
    24         birthDays.put("WolfKing", new Date());
    25         JSONObject jsonObject = JSONObject.fromObject(birthDays, jsonConfig);
    26         String json = jsonObject.toString();
    27         System.out.println(json);
    28     }
    29 }

    (8)JsonObject 对于json的操作和处理

    a)从json串中获取属性

    1 String jsonString = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 Object key = "name";
    3 Object value = null;
    4 JSONObject jsonObject = JSONObject.fromObject(jsonString);
    5 value = jsonObject.get(key);
    6 jsonString = jsonObject.toString();

    b)除去json中的某个属性

    1 String jsonString = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 Object key = "name";
    3 Object value = null;
    4 JSONObject jsonObject = JSONObject.fromObject(jsonString);
    5 value = jsonObject.remove(key);
    6 jsonString = jsonObject.toString();

    c)向json中添加和修改属性,有则修改,无则添加

    1 String jsonString = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 Object key = "desc";
    3 Object value = "json的好东西";
    4 JSONObject jsonObject = JSONObject.fromObject(jsonString);
    5 jsonObject.put(key,value);
    6 jsonString = jsonObject.toString();

    d)判断json中是否有属性

    1 String jsonString = "{\"id\":\"1\",\"name\":\"Json技术\"}";
    2 boolean containFlag = false;
    3 Object key = "desc";
    4 JSONObject jsonObject = JSONObject.fromObject(jsonString);
    5 containFlag = jsonObject.containsKey(key);

    转载于:https://www.cnblogs.com/renmengkai/p/9183775.html

    展开全文
  • 在选购一款无线路由器的时候,哪个参数是你最为关注的?相信绝大多数用户的答案都是无线传输速率。 没错,这个常常出现在产品外包装显著位置的数字,早已成为无线路由器的最...这是PPT格式的版本。最近部门的老板...

    在选购一款无线路由器的时候,哪个参数是你最为关注的?相信绝大多数用户的答案都是无线传输速率。

    无线网络传输速度对比分析报告

    没错,这个常常出现在产品外包装显著位置的数字,早已成为无线路由器的最重要的参数。

    但你可了解,这个数字仅仅是一个理论值,相比无线路由的实际传输速率有很大的水分。那么这个最重要的参数的含水量究竟有多大呢?我们一起来讨论一下。

    这是PPT格式的版本。最近部门的老板总在抱怨说无线网络速度较慢,因此,做了这个PPT版本向其解释。

    这是目前主流的无线标准及其最大传输速度,主流的100Mbps桌面接入有线网络,换算之后就是后面的数据。

    我们都已经发现了,802.11n的两个速度标准都超过了100Mbps的有线网络,那么,究竟哪个更快呢?

    无线网络传输速度对比分析报告

    带着疑问,我们来逐个分解。

    以下的数据摘自互联网,是在单Pair且加密的环境下测试的。

    首先,我们一起来看看802.11b的表现

    802.11b的理论最大速度为11Mbps,即1.375MB/s

    在实际测试过程中,大部分的802.11b网络的传输速度在4-5Mbps之间,即512K-640KB/s。水份达到60%,这样的速度显得不能满足我们的要求。

    无线网络传输速度对比分析报告

    接下来,我们来看看802.11g的测试表现,这是在前几年应用最广泛的标准

    802.11g的理论最大速度为54Mbps,即6.75MB/s

    在实际测试过程中,大部分的802.11g网络的传输速度在18-24Mbps之间,即2.25-3MB/s。水份也达到了60%

    现在我们公司用的就是802.11g,也就是2.25-3MB/s的水平,很明显比100M有线网络慢。

    因此,在人们看来,无线网络标准由802.11b过渡到802.11g时,这只是一次升级行为,所带来的效果并没有让我们感到惊奇。

    无线网络传输速度对比分析报告

    如今,不管是802.11b还是802.11g,都已经过时了,现在的主流是802.11n,那么802.11n的表现如何呢?

    我们先来看看150M的802.11n,理论最大速度为150Mbps,即18.75MB/s,那在实际测试过程中的表现呢?我想各位在家都有使用802.11n,根据大家的经验,认为能够达到多少?

    在实测过程中,大部分150M网络设备的速度都在45-55Mbps之间,即5.625-6.875MB/s,相比理论最大速度,水分值高达66%。

    无线网络传输速度对比分析报告

    这个速度我想大家都不太满意,接下来我们来看看最后一个。

    300M的802.11n最大理论速度达到300Mbps,即37.5MB/s,这个速度达到100M有线网络的3倍了。

    在实际测试过程中,平均速度仅为60-80Mbps,即7.5-10MB/s,水分值高达78%,这个结果多少都有点失望。小伙伴们都惊呆了!

    当然,加密会影响部分速度,如果你想快,可以裸奔,但不建议这么做,我们也不会这么做。

    由此看来,中国电信的100M宽带其实是有点浪费了,无线路由器是一个瓶颈,在802.11ac环境下表现会更好,不过这个100M的带宽也可能是在玩虚的。

    现在新出的部分家用802.11n产品在单Pair且不加密的环境下可以达到100-105Mbps了。

    无线网络传输速度对比分析报告

    最后是大家最熟悉的100M有线网络,毫无疑问,理论最大值达到100Mbps,即12.5MB/s。

    平均测试速度可达89Mbps,即11.125MB/s,水份值仅为11%。表现还是非常不错的。

    无线网络传输速度对比分析报告

    通过前面测试数据的分析,谁快谁慢大家都很清楚了。

    在实际速度上,100M有线网络还是占据了一定的优势。

    更重要的是,100M的有线网络是交换型网络,两个节点之间独享100M带宽,但无线网络是共享型网络,实际速度会受到AP所连的客户端数据的增加而降低。

    无线网络传输速度对比分析报告

    无线网络的水分如此之大,是什么原因呢?

    我认为有以下五点:

    1、无线网络采用的是半双工传输,这一下就砍掉50%了。时分多路复用

    2、使用环境复杂,墙体,金属等的干扰,以及2.4GHz频段的拥挤,都会影响传输速度

    3、影响速度的因素是传输距离,你不会想在50米以外还能达到理论最大值的连接速度吧

    4、无线加密的影响,裸奔是最快的,但不建议。

    5、不同厂商设备的兼容性,同样的标准,前几年的设备只能达到80Mbps,现在生产的设备可能达到100Mbps。

    无线网络传输速度对比分析报告

    无线实际传输速率与理论传输速率有着如此巨大差距,那么无线网络还值得选择吗?

    答案当然是肯定的。毕竟这是在拿它的劣势和有线网络的优势在比。

    虽然无线网络的理论传输速度有很大的水分,但我们看到无线网络与有线网络的差距正在缩小,目前300M无线路由已经可以提供超过60Mbps的实际无线传输速率,相比有线网络90Mbps的表现,差距并不明显,即使是通过无线网络观看高清视频,它也可以胜任;而随着450Mbps无线产品的上市,无线网络的实际速率将达到130Mbps。

    以及还有更新的802.11ac标准。

    无线网络传输速度对比分析报告


    作者:haichuan

    来源:51CTO

    展开全文
  • 距离H.265/HEVC标准正式发布已经有4年多的时间,虽然其压缩效率比H.264/AVC高出一倍,可以为视频公司节约带宽成本,但H.264仍是目前最流行的视频编码格式。除了复杂度高、实现困难外,H.265/HEVC高昂的专利费用和...

    转自:http://media.pkusz.edu.cn/achievements/?p=138

     

    H.265/HEVC

    距离H.265/HEVC标准正式发布已经有4年多的时间,虽然其压缩效率比H.264/AVC高出一倍,可以为视频公司节约带宽成本,但H.264仍是目前最流行的视频编码格式。除了复杂度高、实现困难外,H.265/HEVC高昂的专利费用和复杂的授权政策也是阻碍其推广的重要因素。

    目前已经建立了三个针对H.265/HEVC的专利池,除了老牌的MPEG LA外,还有HEVC Advance和Velos Media发起的专利池;此外, Technicolor公司也在独立收取授权费用。下面我们梳理一下H.265/HEVC的专利授权费用。

    MPEG LA还延续着以往的收费习惯,终端销量在10万台以下的不收费,超过的部分每台收取0.2美元的授权费,封顶费用相比于H.264大幅提高,每年2500万美元。值得一提的是,MPEG LA针对视频内容不再单独收费。

     

    图片来源:MPEG LA官网

    相比之下HEVC Advance就没那么厚道了。不仅收费范围广,涵盖了电视、智能手机、流媒体播放器、机顶盒、游戏主机、数字媒体存储设备、监控设备等几乎所有的硬件终端以及Netflix、YouTube等内容提供商,而且费用极其高昂,虽然下调了一次,但仍比MPEG LA的收费高出许多:终端设备要缴纳0.2-1.2美元不等,封顶年费4000万美元。在内容方面,除了对终端用户提供免费内容的供应商外,其他内容提供商也要根据订阅数、节目数和媒体数收费,封顶年费500万美元。

    图片来源:HEVC Advance官网

    Velos Media和Technicolor公司没有公布他们的收费政策。

    从目前的情况来看,保守估计每年需向三个专利池和Technicolor公司缴纳的H.265/HEVC专利许可封顶费用会超过1亿美元!

    AVS2

    中国第一次意识到知识产权的重要性是在2002年,DVD事件给中国敲响了警钟。同年6月,中国数字音视频编解码技术标准(AVS)工作组获批成立,当初的主要目的就是解决我国音视频领域无可用标准而不得不缴纳高昂的专利许可费用使用国际标准的问题。AVS工作组于2006年推出了第一代视频编码标准AVS1,被颁布为中国国家标准。随后又推出了AVS1的增强版本AVS+,压缩效率和H.264/AVC的High Profile相当,并于2012年7月被国家电影电视总局颁布为广播电影电视行业标准,目前已有上千套AVS+的高清内容上星直播。2013年6月, IEEE(电气和电子工程师协会,国际电子信息领域影响最大的学术组织)将AVS系列标准颁布为IEEE标准,标准号为IEEE 1857,这标志着AVS标准正式走向国际。除了中国,老挝、斯里兰卡、吉尔吉斯斯坦、古巴等国家也采用了AVS标准推广数字电视。

     

    图片来源:《AVS通讯》第91期

    AVS2是AVS工作组制定的第二代标准,其首要目标是应用于超高清视频和视频监控领域,编码效率比AVS+提高一倍以上。

    在专利许可方面,AVS简洁实惠。AVS1和AVS+采取“AVS专利池”统一许可模式,每个编解码器只象征性得收取1元专利费,不对内容收费;而且在工作组成立之初就制定了规则:凡是向AVS工作组提交技术和提案的单位都需要对其专利许可意向做出承诺,允许免费使用者加入“AVS专利池”。这一机制解决了目前国际标准制定时缺乏对技术许可政策的约束,造成因为专利授权政策问题难以推广的弊端。需要指出的是到目前为止,AVS并没有收取过专利费。AVS2虽然暂未出台正式的专利许可政策,但根据AVS专利池管理委员会出台的《关于AVS2专利池许可的建议性规定》,AVS2的专利授权将沿用AVS1的统一许可模式,只对设备象征性收费,不对内容收费。特别的,对互联网上的软件服务免收专利费。

    AV1

    2015年9月1日,谷歌宣布与亚马逊、思科、英特尔、微软、火狐、奈飞(Netflix)成立开放媒体联盟(Alliance of Open Media,简称AOM),专注于下一代视频编码格式的开发。新一代视频编码格式命名为AV1,被认为是开源编码器VP9的继承者,具有以下几个特点(以下内容来源于AV1官网,译文仅供参考):

    • Interoperable and open;(可互操作和开放的)
    • Optimized for the Internet;(针对互联网做优化)
    • Scalable to any modern device at any bandwidth;(可拓展到任意带宽下的任何现代设备)
    • Designed with a low computational footprint and optimized for hardware;(计算量低,针对硬件做优化)
    • Capable of consistent, highest-quality, real-time video delivery;(能够实现持续的的高质量实时视频的传输)
    • Flexible for both commercial and non-commercial content, including user-generated content.(适用于商业的和非商业的内容,包括用户生成的内容)

    AOM原计划于2016年12月至2017年3月期间推出AV1,但随后又宣布推迟到2017年的第三季度。

    那么,目前这三个标准的性能究竟如何呢?为此,我们在HEVC的通测条件下,对H.265/HEVC、AVS2、AV1这三个编码标准的编码效率进行了对比测试。

    测试条件

    HEVC编码器选择最新的参考软件HM16.9,AVS2选择参考软件RD19.0,AV1使用的是2017年4月26号上传的版本。由于AV1没有给出官方的配置指南,我们采用默认的配置,包含19种编码工具,测试条件如下:

    HEVC则选用官方的通用测试条件,在随机访问(random access)配置下进行测试,具体情况如下:

    为了尽可能得公平,AVS2也调整到和HEVC相近的码率点进行测试。

    测试序列选择HEVC通测条件中给定的序列,为了使测试更加全面,我们选取Class A~Class E来进行测试,分辨率包含240P~1600P。

    测试结果

    BD-rate能够很好得反映在同样的客观质量下,码率节省情况,因此,我们选用BD-rate作为评判编码器性能的指标,用HEVC作为Anchor, 正值表示性能有损失,负值表示增益。

    从上表中可以看到: 和HEVC相比,在亮度分量上,AVS2平均有0.23%的增益, AV1平均有12.4%的损失。

    4K 10bit测试

    HEVC和AVS2主要是应用于超高清视频领域,但HEVC给定的测试序列中并不包含4K序列。华为海思用国家电影电视总局指定的4K 10bit序列对HEVC和AVS2在通测条件下进行了测试,测试结果如下:

    从测试结果中可以看到:对于4K 10bit序列HEVC的编码效率普遍低于AVS2,个别序列甚至差了将近10%,平均性能损失为3.0%。这也意味着,在超高清领域AVS2性能略优于HEVC。

    主观方面,根据国家广播电影电视总局广播电视计量检测中心的报告显示:AVS2和HEVC相对于源图像质量下降分别为2.9%和3.0%。对于超高清视频,在相同码率条件下,AVS2平均主观质量比HEVC也略优。

    结论

    新一代视频编码标准在高清视频编码领域的竞争相当激烈。HEVC推出较早、知名度高,但专利政策复杂而且费用高昂,制约了HEVC的推广。AVS2在高清视频领域和HEVC的压缩效率相当,在4K超高清领域比HEVC性能略优,而且AVS2的专利许可政策简洁优惠,为企业提供了新选择。AV1尚在制定中,虽然号称免专利费用,但从目前的情况来看,编码性能和HEVC、AVS2相比还有超过10%的差距。至于哪个标准会在未来十年引领新一代视频编码标准,就让我们拭目以待吧!

    展开全文
  • 新一代视频编码标准:HEVC、AVS2和AV1性能对比报告     H.265/HEVC 距离H.265/HEVC标准正式发布已经有4年多的时间,虽然其压缩效率比H.264/AVC高出一倍,可以为视频公司节约带宽成本,但H.264仍是目前最流行...
  • 导读: FireFox一直标榜是安全浏览器,它不支持ActiveX,当然可以把来自针对IE的威胁统统挡在门外,不过这种安全可能只是一个假象,根据安全人员Jeff Jones的统计,FireFox可远没有我们...以下是一张对比图像和一份PDF格式
  • 写在前面: hive表的源文件存储格式有以下几类:text 、sequence、parquet、rc、orc。下面试着从写入时间、压缩比、查询速度、表结构...新增了两个关于parquet的对比格式。其中,parquet_gzip是基于gzip压缩的parq...
  • 它对于比较文本尤其有用,其中包含的函数可以使用多种常用差异格式生成报告。 实现了三个类: SequenceMatcher 任意类型序列的比较 (可以比较字符串) Differ 对字符串进行比较 HtmlDiff 将比较结果输出为html...
  • 工作簿对比工具

    2018-03-23 09:16:16
    能够比较两个Excel表或Excel工作簿之间的各种差异,包括格式、内容、宏、名称等,并生成比较报告,输出到一个新的Excel中,对于经常使用Excel办公的用户来说很有用。
  • 注册表对比工具

    2013-04-26 03:43:36
    regsnap 是一个可以帮助你分析 windows 注册表的... regsnap 生成 html 格式报告, .reg 文件以撤销或重做注册表更改. pro 版支持命令行界面, ole 自动化(例如可以成为你的程序的脚本) 并可以连接到一个远端注册表.
  • 好的报告只需要遵循3点即可:清晰的结构、简要的语言以及数据的对比。 二、如何用Loadrunner自动到处HTML以及word版的报告? 1.导出html格式报告方法:Loadrunner-Analysis-Reports-HTML Report——>即可导出...
  • Araxis Merge,这是我至今用过最好用的文件/目录对比工具。...进行版本和质量控制,还可以生成 HTML 或是 XML 格式对比报告。 为了方便演示,我们现弄一些演示用的文件: . ├── dir1 │&nbsp;&nbs...
  • solr 1.3 增加了两种格式的输出,现在对各种输出给个测试报告。有 xml、json、php、phps输出作个对比,对相同相同查询各请求1W次,下面测试结果: solr-writer-test 点击放大 上面的结果表明,json是最快的(吞吐量...
  • 情况如标题所说,急啊!...要求用的工具是open xml sdk,有两份word doc文档,内容相同,只不过是某些字体的颜色,大小不同,现在的任务是把这两分doc 文档转为xml,然后在对比两份xml文件,生成对比报告。。。。
  • 华容道【解题报告

    2017-10-27 21:00:00
    解题报告 1442. [NOIP2013]华容道 ★★★ 输入文件:PuzzleNOIP2013.in 输出文件:PuzzleNOIP2013.out简单对比时间限制:1 s 内存限制:128 MB 【题目描述】 【输入格式】 输入文件改为:PuzzleNOIP...
  • 今年一月中旬起,征信中心面向社会公众和金融机构提供二代格式信用报告查询服务,相比一代征信系统,二代征信系统又做了哪些升级?提供的信用报告又有哪些变化?相对于一代征信报告,大家更加急切地想知道二代征信...
  • 写测试记录报告

    2018-07-03 18:17:00
    1利用模板格式 2关键参数记录 3一定要有对比实验 4结尾要给出自己的结论 5要从多个方面考虑 软件调试 硬件layout DFM分析 零件可靠性 转载于:https://www.cnblogs.com/huangbaobaoi/p/9260001.html...
  • 我在工作时,对比两份报告的英文名字的时候,发现用简单地 = 无法作出正确的判断是否相同。比如: 前提是我们知道这两份报告名字都是同一个人的,只是表示的格式不一样,可以看到有些有Mr或者Ms 的称谓,而且第一列...
  • Parquet与ORC性能测试报告

    万次阅读 2016-04-19 10:58:43
    本文主要使用Hive引擎对比测试了两种业界较为认可的列式存储格式——ORC和Parquet,并使用Text存储格式对比,设置了星状模型、扁平式宽表,嵌套式宽表等多种场景进行测试,以供感兴趣的同学参考。
  • 1. 使用PS对图像进行虚化、锐化、水彩、浮雕以及其他特效处理,保存每次的处理结果,用于对比各种特效的效果; 2. 对图像进行格式转化,计算各种压缩格式的压缩比。
  • 从TFL的卡纸相机中获取图像,然后将图像与IBM watson的视觉分类器进行对比,然后返回结果(已合并/未合并)。 然后,程序使用websockets将结果推送到网页上。 当前每5分钟检查一次,但可以更改以适合要求。 ## ...
  • 题目:XXXXXX项目管理报告 1 钢铁物流企业信息 1.1 国内外钢铁物流企业 随着钢铁工业的快速发展,钢铁物流业高度繁荣。当钢铁物流企业在规划最适合自身发展的战略时,应该对国内外钢铁物流企业的发展现状及信息系统的...
  • 对比两个文件不一样的软件

    千次阅读 2018-03-16 14:41:58
    测试那边向我报告了一个bug,说有数据查不出来,于是我查了一下sql,发现本地的sql没问题,但是服务器端的sql却查不出来,因为sql太长而本地sql与服务器端sql又长得特别像的原因(保存为txt都要60k),导致我无法...
  • 报告上的所有错误。 贡献 欢迎所有贡献; 请先阅读。 我们也有一个营造包容性和生产性空间的机会。 DABEST用其他语言 DABEST也可以在R()和Python()中使用。 教程 资料格式 数据应为csv文件格式,并包含两列,...
  • 政府报告分词 题目二: 概述: ''' 问题2:数据关联。要求:修改PY301-2. py文件中代码,对比两组主题词的差异,输出两组的共有词语和分别的 特有词语。输出示例如下: (示例词语非答案) 共有词语:改革,(略),深化 2019...
  • 相关数据被编译,分析,并以图表和图形格式放置。 结论:SSE很少见,通常在3个独立的时间顺序阶段进行。 疼痛/发烧,神经系统缺陷和麻痹。 通常缺乏触诊的柔韧性。 假定有3种传播方法:血源性,连续性和医源性。 ...
  • 16、自定义报告格式:软件报告格式是可以随意修改的,可以随意的调整任何一幅图像,任意文字在报告中的位置。 17、打印:超声影像工作站软件支持所有打印机,任何类型的打印纸,并且根据打印纸大小调整适应打印版面...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 176
精华内容 70
关键字:

对比报告格式