??xml version="1.0" encoding="utf-8" standalone="yes"?>
伴随着新经的发展Q互联网逐渐成ؓ了世界的dQ在短短数十q的旉里,|络变得来完善,来可爱,它拉q了ZZ间距,使我们的地球变成了一个真正的"村落"Q让更多的h体会C"w隔千里q,情系一UK"的快感?
|络的发展也促进了通讯手段的变化,传统的交方式已l不能满h们的要求。从E-mai到Internet PhoneQ网l带来了通讯速度的提升,更降低了通讯成本。而随着宽带|络的普及,Z对网l通讯也有了进一步的要求。宽带网l的发展Q改变了传统|络通讯的质量和形式Q交流不再只是局限于普通语a文字Q利用视频让天各一方的朋友能够彼此相见。作为实现视频聊天的辅助工具Q除了一台配|中{的电脑外,q需要配备一?眼睛"。通过它你可以看到Ҏ的容颜,也让Ҏ一睹你的风采?
数码相机可以作ؓ视频聊天的工P但h格昂늚它用在视频聊天上却多有些浪贏V相比,摄像头显然更适合于视频聊天用。不仅画质清晎ͼ捕捉画面速度快,而且h便宜Q售价在三、四癑օ。另外,׃一般摄像头采用USB接口Q还可以集成一些诸如拍照(|技摄像_、存储(蓝科火钻"蓝睛?Q之cȝ功能Q丰富用空间?
摄像头的原理介绍Q?
现在市场上销售的摄像头都是数字摄像头Q它摄像单元和视频捕捉单元集成在一P通过微机上的USB接口Q可以实现即插即用,非常适合W记本电脑和品牌机用戗例如一些带有拍摄功能的产品。还有一些有闪盘功能的摄像头产品Q在接入电脑后还可以当作32MB的闪盘用,真正一盘两用?
当然Q摄像头基本的功能还是视频传输,那么它是依靠增养的原理来实现的呢Q所谓视频传输就是将囄一张张传到屏幕Q由于传输速度很快Q所以可以让大家看到q箋动态的画面Q就像放电媄一栗一般当画面的传输数量达到每U?4帧时Q画面就有了q箋性。在q行q种囄的传输时Q必d囄q行压羃Q一般压~方式有如H.261、JPEG、MPEG{,否则传输所需的带宽会变得很大。大家用RealPlayer不知是否留意Q当播放电媄的时候,在播攑֙的下方会有一个传输速度250kbps?00kbps?000kbps...画面的质量越高,q个速度也就大。而摄像头q行视频传输也是q个原理Q如果将摄像头的分L率调?40×480Q捕捉到的图片每张大约?0kb左右Q每U?0帧,那么摄像头传输视频所需的速度?0×30/sQ?500kbpsQ?.5Mbps。而在实际生活中,Z一般用于网l视频聊天时的分辨率?20×240甚至更低Q传输的帧数为每U?4帧。换a之,此时视频传输速率不?00kbpsQh们就可以q行较ؓ畅的视频传输聊天。如果采用更高的压羃视频方式Q如MPEG-1{等Q可以将传输速率降低?00kbps不到。这个就是一般视频聊天时Q摄像头所需的网l传输速度?
宽带|络Q?
视频压羃上已l可以满_用的标准Q但视频聊天的实玎ͼq需要互联网条g的认可。一般来_在国内我们可以通过以下几种方式上网Q?
String name = "?;
q个字符串就一个字W,把它取出?/FONT>
char c_name = name.charAt(0);
JAVA里的char型是十六位的Q两个字节)Q但是如果是用UTF-8的话可能会不只两位(UTF-8是变长存储的Q,那看来JAVA本nq不是用UTF-8来保存的Q口说无凭,做个实验吧?BR> 首先看看char里保存的内容
int low = (c_name) & 0xff;//取c_name的低?/FONT>
int high = (c_name >> 8) & 0xff;//取c_name的高?/FONT>
System.out.println(Integer.toHexString(high) + " " + Integer.toHexString(low));
l果?8 02
只有两个字节而已Q?6位)Q那么真正的UTF-8~码的内Ҏ什么呢Q再看看吧?/FONT>
Z方便Q我写了一个辅助方法printbyteQ作用是把一个byte数组的每个元素按照十六进制格式打印出来,同样Z方便Q我把它作ؓ静态方法?/FONT>
byte[] utf_8 = name.getBytes("utf-8");
printbyte(utf_8);
l果是e5 a0 82 length = 3
哇,三个字节Q看来JAVA内部用的真不是UTF-8Q那用的是什么呢QUTF-16Q看一下便知?/FONT>
byte[] utf_16 = name.getBytes("utf-16");
printbyte(utf_16);
l果是fe ff 58 02 length = 4Q靠Q四个字节了。咦Q后面的?6位不正是和开始c_name的十六进制表CZL吗?看来JAVA真正的内部字W编码和UTF-16有或多或的联系。JAVA内部I竟是用的什么字W编码呢Q这个问题我也找了很久,后来在THINK IN JAVA 3rd?2章里看到一个例子出CUTF-16BEQ难道是它?
byte[] utf_16be = name.getBytes("utf-16be");
printbyte(utf_16be);
l果出来了:58 02 length = 2
哈哈QI got it!不多不少两个字节Q内容也一栗果然是它。同时我在里面也看到QUNICODE的编码还有一个LEQ这里的BE,LE我想应该是bigendian和littleendian吧?BR>
|
|
|