2015年10月17日星期六

Android IOS WebRTC 音视频开发总结(四七)-- 深度解读国内首届WebRTC大会背后的真相 - RTC.Blacker

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
Android IOS WebRTC 音视频开发总结(四七)-- 深度解读国内首届WebRTC大会背后的真相 - RTC.Blacker  阅读原文»

本文主要解读国内首届WebRTC大会背后的真相,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help

---------------------------------------------------

google于2011年就将WebRTC代码开源了,大会在国外也已经主办好几届了,有声有色,但为什么国内才首次举办呢?

其实国内之前也举办过几次,不过不能叫大会,只能叫内部交流会,因为规格和声势跟这次差几个等级,

有兴趣可以看看我下面这张之前在深圳搞的一次webrtc大会的参会人员截图名单:

----------------------------------------------

上述名单说明如下:

1,IT大佬对这个都还是比较感兴趣的,或多或少排出了相关人员参与。

2,这次会议很少被外界知道,参与人数并不多(80人左右),规模也比较小。

3,不要问我名单来源,更不要找我要完整的名单,不能说的秘密。

下面分析一下为什么前面几次国内的webrtc交流大会到最后变成了一个内部交流会:

1,前几年国内真正搞webrtc的人还不多,很多人都没听说过这个名词,所以关注的人也少。

2,之前都是google在推动,后面基地离开中国了,没兴趣继续赔本赚吆喝。

3,真正做rtc相关sdk的厂商不愿意去推广这个东西,因为动了他们的奶酪,具体原因我之前已经分析过。

看完上面的第三点,很多人会反对,为什么?因为这次webrtc大会就是声网在推动的,他们不就是rtc的sdk厂商吗?

没错,声网是rtc的sdk厂商,但他们为什么愿意推广这个东西呢?原因如下:

1,先把蛋糕做大,让更多的人知道rtc,应用rtc,这点很重要,做过生意的人都知道,如果蛋糕就那么大,拼个你死我活,得个第一名有什么意义?

2,有肌肉可秀,什么意思呢?如果声网觉得自己做出来的东西效果跟webrtc差不多或者说只是稍微好一点,他敢到处宣传这个东西吗?

说到肌肉我就再谈谈webrtc源码的问题——之前包括我在内的很多人都怀疑google是不是将gips真正开源了。

理由很充分,腾讯用了gips,为什么qq做出来的效果就比webrtc的好?

细细想想,再根据相关渠道的信息,可以发现:

1,gips独步天下的年代智能机还没比较少,大家都是在pc上搞视频通话,所以webrtc的pc效果跟qq差不大多,说明gips是真的。

2,手机端声音效果为什么会比qq差?问这个问题前可以先想想如果效果差不多,腾讯养这么多音视频人才有什么用?说到这里你就会更理解我上面提到的声网为什么敢推动webrtc大会的理由了,YY技术班底摆在那里,总得有点效果。

3,说到这再多说一句,国内现在提供rtc sdk的厂商很多,已经是红海了,但这行跟其他行业有点不一样,普通用户很难评判不同sdk的好坏,其实换成是专业的如果只看看界面和基本效果也很难评判还坏,所以后面我会分享些资料告知大家如何测试编解码,网络传输,声音处理等这些看不见的技术的好坏。

-------------------------------------

分析了这么多,很多人可能会问我怎么有这么多内幕消息,做什么的。在哪里上班?

其实我没有在哪里上班,就一自由职业者,主要工作也是围着webrtc在转,跟很多做rtc sdk或需要应用rtc的公司或个人都或多或少有些交集,所以知道的会多一点。

另外上次提到咱这边有几张这次webrtc大会免费门票的事,没想到这么多朋友感兴趣,但因为数量有限,不可能满足所有人的要求,

所以咱改为向组委会要了个内部价(7折优惠),见下图(关注微信公众号blacker即可获取优惠码):

-----------------------------------------------------

具体购买方式请关注微信公众号blacker或扫描下方二维码(有些东西如果变更我通过公众号很容易推送),里面有详细教程:

-----------------------------------------------------

大会和门票聊完,再发两样干货:

1,昨天下午跟客户开三地视频会议(上海,深圳和广州),qq效果很一般(特别是噪声和啸声),这时候推荐客户使用下面这个app(可以多人语音群聊的),效果立马提升,所以如果有这种需求您可以试试(多人语音效果优势很明显):

---------------------------------------------------

2,大家都知道手机保护膜价格一般为10~30块,华强北基本上就是这个价格,淘宝也基本上是这个价格,见下图:

----------------------------------------------------

但你知道这东西从华强北进货是多少钱吗?说出来你要么不信,要么惊呆了(如果昨天不是以经销商名义去问我也不敢相信)。

答案是1块7毛,这说明了一个问题:

“made in china很强大,华强北很强大,这东西利润很高”,呵呵~


本文链接:Android IOS WebRTC 音视频开发总结(四七)-- 深度解读国内首届WebRTC大会背后的真相,转载请注明。

cucumber_java从入门到精通(5)使用maven创建cucumber_java项目 - 乙醇  阅读原文»

cucumber java从入门到精通(5)使用maven创建cucumber java项目

前几节我们已经在感性上认识了cucumber的基本功能以及BDD测试的基本流程,我们渐进重构,一步一步的向目标逼近。这些实践都是小而美的,但美中不足的是我们在项目工程化上进展缓慢。

目前我们的项目在工程化上存在下面的一些问题:

  • 依赖包管理:我们的依赖包管理非常的原生态。如果cucumber java升级或其他依赖组件升级,我们遇到的麻烦是可以预计的;
  • 构建系统:我们的构建系统还处于刀耕火种的时代,只靠bat脚本很显然经不起复杂长期项目的反复折腾;
  • IDE:我们目前使用的仅仅是纯文本编辑器,尽管没什么不好的,但是使用IDE对于初学者来说还是有好处的。当然如果你是熟练的大神级人物,用notepad去写java也未尝不可;

解决工程化问题

下面我们来研究一下改进工程化问题的一些解决方案,这就是所谓的技术预研。

  • 使用maven来解决我们的依赖包管理及构建问题;
  • 使用eclipse作为我们的java IDE;

下载eclipse及配置

这里下载eclipse,注意32位版本和64位版本的区别;

下载安装完成后,安装eclipse+maven的插件M2Eclipse。安装过程如下:

先点击菜单里的Help-Istall Software

在弹出窗口的work with里输入http://download.eclipse.org/technology/m2e/releases,然后按照下图的指示来

一直下一步之后,m2eclipse就应该安装成功了。

新建maven项目

选择File-New-Other,如下图所示

然后选Maven Project,点击Next

然后直接Next

然后Group Id填写info.itestArtifact Idtodo_list。点击Finish

然后双击打开pom.xml文件

进入编辑状态,如下图所示

把pom.xml替换为下面的代码

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>info.iest</groupId>
<artifactId>todo_list</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>todo_list</name>
<url>http://maven.apache.org</url>

<properties>
<cucumber.version>1.2.4</cucumber.version>
<junit.version>4.12</junit.version>
<java.version>1.8</java.version>
<maven.compiler.version>3.3</maven.compiler.version>
</properties>

<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
<compilerArgument>-Werror</compilerArgument>
</configuration>
</plugin>
</plugins>
</build>
</project>

注意:这里的java.version请替换成你相应的java版本

配置及运行cucumber

打开AppTest.java文件,将其替换为以下的代码

package info.iest.todo_list;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(plugin={"pretty"}, features={"src/test/features"})

public class AppTest {

}

  

  1. 然后在test文件夹下创建features文件夹,并创建todo.feature文件,如下图所示

编辑todo.feature文件,输入下面的内容

#language: zh-CN

功能:任务管理

场景大纲: 完成任务
假设 我的任务清单里有<total>个任务
当 我完成<finished>件任务之后
那么 我还剩下<left>件未完成的任务

例子:
| total | finished | left |
| 3 | 1 | 2 |
| 5 | 1 | 4 |

  

  1. 没啥新鲜的,就是我们上节所重构的代码。

然后在Package Explorer中右键点击todo_list,选择Run As-Maven Test,如下图所示

运行完成后,结果应该是如下图所示

到目前为止,我们已经用maven配置好了cucumber的开发环境,并完成了smoke test。下一节我们会把前几节实现的TodoList移植到这个maven项目






本文链接:cucumber_java从入门到精通(5)使用maven创建cucumber_java项目,转载请注明。

阅读更多内容

没有评论:

发表评论