from : http://www.cnblogs.com/chagel/archive/2009/02/01/1381820.html   附评论

最近在论坛闲逛,先后参与了两题算法趣味题目。

  1. 题目1是要求算一任意长度字符串中不同的字符以及它的个数。
  2. 题目2是把一段字符串用“右起竖排”的古文格式输出。

题目难度不大,都是针对字符串的操作,逻辑比较简单,灵活在对不同语言、语法的掌握程度。(原文分别在:12。)

看了大家用C++、C#、Java等语言的实现,总感觉牛刀杀鸡太麻烦,有兴趣的朋友可以自己写写看或者直接看原文的网友回复。我最近一段时间Python写的比较多,读到这些题目时候,就有一种跃跃欲试的冲动。因为我知道用Perl,Python,Ruby等动态语言来做这类题目,会是非常理想的。后来我做了这两道题目,结果也令人满意,代码之简洁保持在所有答案的前列。

先看第一题Python解答:

dic = {}
for s in "abcdefgabc":
dic[s] = 1 if s not in dic else (dic[s]+1)
print '\n'.join('%s,%s' % (k, v) for k, v in dic.items())

输出结果:

a,2
c,2
b,2
e,1
d,1
g,1
f,1

Python的四行代码分别做了dictionary的声明,赋值,字符串的遍历,以及高效拼接。

如果还没有看出它的简洁和强大的话,请看第二题的解法:

def main(offset=6):
    string = u'静夜思 李白床前明月光,疑似地上霜。举头望明月,低头思故乡。090131'
a = [[' ']*offset for row in xrange(offset)]
for i in xrange(offset):
for j in xrange(offset):
a[i][j] = string[j + i*offset]
b = [[r[col] for r in a[::-1]] for col in xrange(len(a[0]))]
    print '\n'.join([u'┊'.join(unicode(c) for c in row)for row in b])

输出结果:

0┊低┊举┊疑┊床┊静
9┊头┊头┊似┊前┊夜
0┊思┊望┊地┊明┊思
1┊故┊明┊上┊月┊
3┊乡┊月┊霜┊光┊李
1┊。┊,┊。┊,┊白

这题如果用C#等实现,代码要在20行以上。下面我简单介绍一下这几行代码:

  1. 第3行,在Python里面二维“数组”通过嵌套list来实现,这里初始化一个6行6列的二维数组;
  2. 第7行,我们把“矩阵”顺时针旋转了90度(行列置换,并且对置换后的行首尾对调-这里的::-1就是用来置换一个list的trick);
  3. 最后一行,我们把数组里的每行中元素,每行之间分别用两个不同字符拼接起来。join方法以及for..in..语句在python中是相当常见的用法。

通过这两题,我们看到Python在处理字符串时候的十分灵活方便,虽然一种语言的好坏不应完全靠是否简洁来衡量,但对于我个人而言,Python是目前我用过的最好的语言。而且对于趣味题来说,这不就是我们解题的趣味所在吗?

Tag标签: python
Posted on 2009-02-01 07:01 Chagel 阅读(1328) 评论(14)  编辑 收藏 网摘

Feedback

#1楼    回复  引用  查看    

2009-02-01 09:50 by Jeffrey Zhao      
从CSDN的趣味题学C# 3.0
http://www.cnblogs.com/JeffreyZhao/archive/2009/02/01/1381867.html

#3楼    回复  引用  查看    

2009-02-01 10:24 by JimLiu      
老赵的代码不错,我改进下
第二个
static void Count(string message) {
message
.GroupBy(c => c)
.ToList()
.ForEach(p => Console.WriteLine("{0}, {1}", p.Key, p.Count()));
}

这样似乎更爽一些,呵呵

#4楼    回复  引用  查看    

2009-02-01 10:26 by Jeffrey Zhao      
@JimLiu
那个select的确可以省,我是习惯于先搞出数据来,然后添加行为,而不是在行为里继续计算

#5楼    回复  引用  查看    

2009-02-01 10:34 by JimLiu      
@Jeffrey Zhao
呵呵,是因为先select了好重复用吧,习惯问题,我的喜欢就根据题目变化。

#5楼    回复  引用    

2009-02-01 11:59 by young5335 [未注册用户]
a="abcdefgabc"
myset=set(a)
for s in myset:
print(str(a.count(s))+" "+s)

2 a
2 c
2 b
1 e
1 d
1 g
1 f

#6楼    回复  引用    

2009-02-01 13:24 by young5335 [未注册用户]
import math
colSize=6
string="静夜思 李白床前明月光,疑似地上霜。举头望明月,低头思故乡。0901311"
iLen=math.ceil(len(string)/colSize)
l=list(reversed(([string[i*colSize:i*colSize+colSize].ljust(colSize,' ') for i in range(0,iLen)])))
for i in range(colSize):
for j in range(iLen):
print(l[j][i],end=" ")
print()

python语法我真的快忘光光了.

#7楼    回复  引用    

2009-02-01 13:28 by young5335 [未注册用户]
要改成跟楼主一样的分隔符,把end="┊"

#8楼    回复  引用    

2009-02-01 13:44 by young5335 [未注册用户]
PHP的:
$a="abcdefgabc";
$result=count_chars($a,1);
array_walk($result,create_function('$v,$k','echo chr($k)." ".$v."<br/>";'));

a 2
b 2
c 2
d 1
e 1
f 1
g 1

#9楼    回复  引用  查看    

2009-02-02 00:00 by Icebird      
JavaScript:

var s = "hello";
var arr = s.split('');
var o = {};
var c;
for (var i = 0; i < arr.length; i++)
{
o[arr[i]] = (o[arr[i]] ? o[arr[i]] : 0) + 1;
}

var result = "";
for (var p in o)
{
result += p + ", " + o[p] + "\r\n";
}

alert(result);

#10楼    回复  引用    

2009-02-02 10:22 by 赖勇浩 [未注册用户]
>>> from collections import defaultdict
>>> adict = defaultdict(int)
>>> for s in "abcdefgabc":
... adict[s] += 1
...
>>> print '\n'.join('%s,%s' % (k, v) for k, v in adict.iteritems())
a,2
c,2
b,2
e,1
d,1
g,1
f,1

#11楼    回复  引用    

2009-02-02 11:21 by young5335 [未注册用户]
a="abcdefgabc"
b={}
a.each_char { |x|b.store(x,a.count(x)) }
b.each {|k,v| puts k+" "+v.to_s}

#12楼    回复  引用    

2009-02-02 15:18 by hehehe [未注册用户]
试试Groovy:

('abcdefgabc' as List).groupBy{it}.each{k, v -> println "$k, ${v.size()}"}

#13楼    回复  引用    

2009-02-02 15:37 by hehehe [未注册用户]
试试Groovy(第二题):

def a = '床前明月光 疑似地上霜 举头望明月 低头思故乡'.tokenize(' ')

5.times{row ->
println a.collect{it[row]}.reverse().join('|')
}


低|举|疑|床
头|头|似|前
思|望|地|明
故|明|上|月
乡|月|霜|光

#14楼    回复  引用    

2009-02-02 16:04 by zealtea [未注册用户]
txt = u"静夜思 李白床前明月光,疑似地上霜。举头望明月,低头思故乡。"
offset = 6

a =[i[::-1] for i in zip(*[txt[i:i+offset] for i in range(0, len(txt), offset)])]

for i in a:
print "|".join(i)
posted @ 2009-02-04 10:45 小马歌 阅读(261) | 评论 (0)编辑 收藏
 
from : http://www.cnblogs.com/slfyeye/articles/1098890.html

Linux是GNU/Linux的缩写,通常指各种Linux发行版的通称。
常见的Linux厂家主要有Redhat/Novell等。

Redhat有两大Linux产品系列,其一是免费的Fedora Core系列
主要用于桌面版本,提供了较多新特性的支持。
另外一个产品系列是收费的Enterprise系列,这个系列分成:AS/ES/WS等分支。

Advanced Server,缩写即AS。AS在标准Linux内核的基础上,
做了性能上的增强,并提高了可靠性,集成了众多常见服务器的驱动程序。
可轻松识别IBM/DELL/HP等常见机架式服务器的磁盘阵列卡等设备。

AS主要版本2.x/3.x/4.x,也就是我们所说的AS3/AS4
每一个版本还有若干个升级,例如最早推出的AS4后,遇到了一些更新
此时就会发布AS4 Update1,以后还会陆续有AS4 Update2/Update3等出现
简称AS4u1/AS4u2/AS4u3等。这和微软的发布形式也是非常类似的,
微软的Windows NT4 从SP1出到SP6,Windows2000从SP1出到SP4。。。。

AS这些Update版本所包含的主要程序包版本都有一定差别,最好不要混用
否则很容易出现问题。Prima和Plesk的安装包,对于各种发行版都有了针对性的设计
在下载页面上,通常都会标识出来,支持哪些版本和哪些update的系统。

ES,是AS的精简版本。他与常见的AS系列的区别是,AS支持到4路以上CPU,
而ES只能支持两路CPU。AS和ES在大多数程序包上并无区别,
只在内核等少数软件包上有差异。
AS和ES的售价差别比较大,通常ES用在随服务器一同购买的OEM版本中
例如购买DELL服务器,搭配的Linux会是ES系列。
如果要搭配AS系列,则需要多花数千元。

WS,是ES的进一步简化版,主要针对企业内部的桌面办公市场,国内较少采用。

Redhat的Fedora Core Linux和Enterprise Linux,都需要遵循GNU协议
即需要发布自己的源代码。
所以,对于免费的Fedora Core Linux,从Redhat网站上可以直接下载ISO刻盘,
还能下载到SRPM的ISO,即程序包源码光盘。
对于收费的Enterprise Linux系列,是一款商业产品,所以网站上不能下载到ISO文件,
需要购买正式授权方可。
由于Enterprise Linux也需要遵循GNU协议,故必须发布源代码。
所以在Redhat的网站上,可以获得AS/ES/WS系列的SRPM源码ISO文件。
这些文件可以被自由的下载,修改代码,重新编译使用。

一个名为Community Enterprise Operating System的项目诞生了。
他的缩写既是CentOS。CentOS社区将Redhat的网站上的所有源代码下载下来,
进行重新编译。重新编译后,由于AS/ES/WS是商业产品,
必须将所有Redhat的Logo和标识改成自己的CentOS标识。
比如将AS4原版的SRPM源码编译后,就成为了CentOS 4.0。
AS4Update1的源码编译后,就成为了CentOS4.1。
AS4Update2的源码编译后,就成为了CentOS4.2。
同理,CentOS的3.x/4.x都对应着相应的版本。

所以我们说,CentOS就是Redhat的AS/ES/WS的免费版本。
使用CentOS,可以获得和AS/ES相同的性能和感受。
CentOS除了提供标准的编号1~4或者1~5的若干张ISO以外,
还提供了最小化1CD的Server光盘。用Server光盘安装好的系统,
就是一个最小化的Linux内核加上常用的httpd/mysql等包
不包含Xwindows桌面等对于服务器无用的软件。

Prima、Plesk、Virtuozzo和都可以安装在CentOS上。

学习CentOS的好地方:http://www.centospub.com/make.html

posted @ 2009-02-04 10:42 小马歌 阅读(1146) | 评论 (0)编辑 收藏
 

from: http://www.cnbeta.com/articles/52977.htm
独特的开发模式造就了今天百家争鸣的Linux,各个发行版的名字都代表哪些含义呢?下面是一些常用的版本,感兴趣的朋友一起来看:
1-Ubuntu 这或许是今天最常见的一个Linux发行版了,Ubuntu是一个南非的民族观念,着眼于人们之间的忠诚和联系。该词来自于祖鲁语和科萨语。大意是“人道待人”(对他人仁慈)。另一种翻译是:“天下共享的信念,连接起每个人”。

2-PCLinuxOS
三十种Linux发行版的名称含义

很明显它的名称是PC+Linux+Operating System组合在一起,拥有类似Windows的图形用户界面,方便用户从Windows转向Linux。

3-openSUSE

openSUSE由AMD和Novell共同发起,SUSE是德语“Software-und System-Entwicklung”的缩写(software and system development)。另有一说是为了纪念德国计算机工先驱Konrad Zuse。

4-Fedora

Fedora由Red Hat发起,正是Red Hat标志中人物所戴的那顶帽子。

5-Mandriva
 三十种Linux发行版的名称含义

在以前称为Mandrake,并由MandrakeSoft公司进行维护。当MandrakeSoft输掉了与Hearst Corporation争夺Mandrake名称的官司,并收购了Connectiva后,名称变为了Mandriva。


6-Sabayon
三十种Linux发行版的名称含义

一种意大利甜点,也叫Zabaglion,用蛋黄、糖等原料烹饪而成。
三十种Linux发行版的名称含义


7-Debian

这个名字是Ian Murdock在1998年取的,由当初是女朋友现在是妻子的Debra和他的名字混合而来。


8-Damn Small Linux
三十种Linux发行版的名称含义

像它的名字所说那样,这个Linux发行版体积只有50MB。


9-MEPIS
三十种Linux发行版的名称含义

根据创始人Warren Woodford所说,这个名字最初没有任何含义,只是由于朋友在Skype上误听得来的名字。

10-CentOS
三十种Linux发行版的名称含义

CentOS基于Red Had Enterprise Linux(RHEL),代表Community Enterprise Operationg System。

11-Dreamlinux
三十种Linux发行版的名称含义

这是一个巴西的Linux发行版,基于Debian,外观类似苹果的Mac OS X,名字就像介绍中说的那样。

12-Puppy Linux
三十种Linux发行版的名称含义

一种小型的Live CD系统,目标是简单易用,吉祥物是墨西哥小狗吉娃娃。
三十种Linux发行版的名称含义


13-Kubuntu

KDE + Ubuntu的产物

14-Zenwalk
三十种Linux发行版的名称含义

有禅意的名字,不过根据创始人JP Guillemin所说,这个名字是从发音和含义两个方面模仿Neststep操作系统所起。

15-Slackware

 
创始人是Patrick Volkerding,最初是个人项目,这个名字借用自Church of the SubGenius中的术语 "Slack"。

16-Knoppix

著名的Live CD发行版,基于Dedian,创始人是Klaus Knopper并以此命名。

17-Gentoo
三十种Linux发行版的名称含义

Gentoo是一种体型小巧的企鹅,据说是企鹅中游泳速度最快的一种。

18-Slax
三十种Linux发行版的名称含义

一种基于Slackware的live CD发行版,它的名称并没有特别含义。

19-Sidux

基于Debian尚不稳定,代号“Sid”的一支,名称来自玩具总动员中的角色Sid Phillips。

20-Ubuntu Studio
三十种Linux发行版的名称含义

Ubuntu的派生,以多媒体应用为主。

21-Xubuntu
三十种Linux发行版的名称含义

XFCE + Ubuntu的产物

22-Foresight
三十种Linux发行版的名称含义

Foresight使用Conary作为包管理器,据称,不像大多数发行版一年两次升级那样,它采用滚动升级的方式。

23-Red Hat

下面创始人之一的Bob Young为您解释其中含义:


 

24-OpenGEU
三十种Linux发行版的名称含义

OpenGEU最初称为Geubuntu,使用Gnome和Enlightenment作为桌面管理器。

25-Elive


 

从图标中也可以看出这同样是一款采用Enlightenment作为窗口管理器的发行版,它是基于Debian的Live Cd。

26-Freespire
三十种Linux发行版的名称含义

微软2千万美元买下了“Lindows”这个名字后,Lindows更名为Linspire,Freespire是基于Linspire的源码的Live CD版本。

27-Fluxbuntu
三十种Linux发行版的名称含义

又是Ubuntu的派生版,采用Fluxbox作为窗口管理器。

28-Xandors

X代表X Windows系统,Andros是希腊的岛名。

29-TinyME

是PCLinuxOS的一个轻量级版本,所以称为Tiny。

30-gOS
 三十种Linux发行版的名称含义

同样也是一个基于Ubuntu的版本,以集成了众多Google程序而闻名。不过这里的“g”并不是代表Goolge,也不是Green,而是代表它背后的Good OS LLC公司。

关于更详细的信息请参考:hehe2.net/linux-general/etymology-of-a-linux-distro/

posted @ 2009-02-04 10:35 小马歌 阅读(173) | 评论 (0)编辑 收藏
 
from:http://hi.baidu.com/di6yuansu/blog/item/87c11c2473cb322cd50742d6.html

1、HTTP协议本身是无状态的。
   我们上网都要靠HTTP协议传递信息。比如我们在浏览器里键入:www.bokee.com这个网址并回车,你会发现网址会变成:http://www.bokee.com,其原因就是浏览的网页是基于http协议的。http协议无法记录用户经常上哪些网站,有什么爱好,也无法记录用户的ID帐号和密码。这就是所谓的HTTP协议无状态。HTTP协议本身是无状态的,这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的,好比一个顾客和一个自动售货机或者一个普通的(非会员制)大卖场之间的关系一样,你认得它们,它们则肯定认不得你。

2、怎样理解cookie和session?
   由于cookie和session关系密切,这里我们一并介绍。
   打个比方:在河南时,我常到一家熟食店买馋嘴鸭,该店老板为了促进销售,特发布“每购满10只即可免费赠送一只”的优惠措施。除了家里有什么红白喜事要飨客之外,应该不会有人一次性购买10只烤鸭吧?所以老板得想个法子来记录顾客的消费数量,这里总共有三种方案:
   Ⅰ、老板记住每一个顾客的消费数量,等到顾客消费满10只的时候自动奉送一只。这好比HTTP协议本身是有状态的,可以记住顾客的活动行为。但遗憾的是,出于种种考虑http协议本身是不能有状态的,老板自个也没有这么超常的记忆力,故这种方案行不通!
   Ⅱ、老板发给顾客一张积分卡,上面记录着消费的数量,一般还有个有效期限。每次买烤鸭时,如果顾客出示这张卡片,老板就知道这位顾客曾经光顾过小店。这种做法就是在客户端保持状态,好比是cookie技术。打开(windows系统)C:\Documents and Settings\用户名\Cookies,你会发现一些*.txt格式的小文件,这就是你浏览某些网站,它们发给你的“积分卡”(cookies)。
   Ⅲ、老板发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次买烤鸭时,如果顾客出示该卡片,则老板搬出店里的划名册,找到你的卡号并加1个积分。这种做法就是在服务器端保持状态。
好比是session技术。
     cookie和session最大的区别在于: cookie是把积分卡发给顾客,上面记录了顾客所有的消费信息。Session则是把只有卡号(session id)的积分卡发给顾客,自家记录了顾客所有的消费信息。Cookie是保存在客户端的;session是保存在服务器端,而session id则是保存在客户端,通常也是一个cookie小文件,由于这个小文件除了session id(好比卡号)外什么也没有,因此比cookie安全多了。

3、cookie和session有什么用?
   常见的用法,比如在有些网站下载东西需要会员先登陆。http协议本身是无状态的,无法得知顾客是否已经登陆,怎么办呢?cookie和session就可以知道。再比如网上购物,购物车怎么知道顾客挑选过哪些商品呢?cookie和session也可以记录。总而言之,cookie和session就是能够记录顾客状态的技术,尽管二者属于不同的技术,但只要cookie能做到的,session也能做到!

COOKIE攻略

 

1、什么是cookie?
0Cookie技术是一个非常有争议的技术,自经诞生它就成了广大网络用户和Web开发人员的一个争论焦点。有一些网络用户,甚至包括一些资深的Web专家也对它的产生和推广感到不满,这倒不是因为Cookie技术的功能太弱或别的技术性能上的原因,而仅仅是因为他们觉得Cookie的使用,对网络用户的隐私构成了危害。因为Cookie是由Web服务器保存在用户浏览器上的小文本文件,它包含有关用户的信息(如身份识别号码、密码、用户在Web站点上购物的方式或用户访问该站点的次数)。
    那么Cookie技术究竟怎样呢?是否真的给网络用户带来了个人隐私的危害呢?还是让我们看了下面的内容,再做回答吧。
      在WEB技术发展史上,Cookie技术的出现是一个重大的变革。最先是Netscape在它的Netscape Navigator 浏览器中引入了Cookie技术,从那时起,World Wide Web 协会就开始支持Cookie标准。以后又经过微软的大力推广(因为微软的IIS Web服务器所采用的ASP技术很大程度的使用了Cookie技术),即在微软的Internet Explorer浏览器中完全支持Cookie技术。到现在,绝大多数的浏览器都支持Cookie技术,或者至少兼容Cookie技术的使用。
      按照Netscape官方文档中的定义,Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie是由Web服务器保存在用户浏览器上的小文件,它可以包含有关用户的信息(如身份识别号码、密码、用户在Web站点购物的方式或用户访问该站点的次数)。无论何时用户链接到服务器,Web站点都可以访问Cookie信息。
   如果你使用的是windows系统,那么请打开C:\Documents and Settings\用户名\Cookies,你会发现该目录下有好多*.txt格式的小文件。那就是cookie文件。当然,在该目录下你也可能什么都发现不了,那时因为你新装了系统或者从未浏览过因特网,也或者你的浏览器禁用了cookie。否则该目录下总会有点东西的。
     通俗地讲,浏览器用一个或多个限定的文件来支持Cookie。这些文件在使用Windows操作系统的机器上叫做Cookie文件,在Macintosh机器上叫做magic Cookie 文件,这些文件被网站用来在上面存储Cookie数据。网站可以在这些Cookie文件中插入信息,这样对有些网络用户就有些副作用。有些用户认为这造成了对个人隐私的侵犯,更糟的是,有些人认为Cookie是对个人空间的侵占,而且会对用户的计算机带来安全性的危害。
     目前有些Cookie是临时的,另一些则是持续的。临时的Cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间该Cookie就会被系统清除。例如在PHP中Cookie被用来跟踪用户进程直到用户离开网站。持续的Cookie则保存在用户的Cookie文件中,下一次用户返回时,仍然可以对它进行调用。
     在Cookie文件中保存Cookie,一些用户会过分地认为这将带来很大的问题。主要是有些用户担心Cookie会跟踪用户网上冲浪的习惯,譬如用户喜爱到那些类型的站点、爱从事些什么活动等。害怕这种个人信息一旦落入一些别有用心的家伙手中,那么个人也就可能成为一大堆广告垃圾的对象,甚至遭到意外的损害。不过,这种担心压根儿不会发生,因为网站以外的用户是无法跨过网站来获得Cookie信息的。所以想以这种目的来应用Cookie是不可能的。不过,由于一些用户错误的理解以及“以讹传讹”,一些浏览器开发商别无选择,只好作出相适的响应(例如Netscape Navigator4.0和Internet Explorer3.0都提供了屏蔽Cookie的选项)。 个人认为,无风不起浪,如果网站程序员没有严谨思路的话,cookie确实也存在些许安全问题,不过这些瑕疵并不足以掩盖cookie的优秀品质,大多数人还是非常乐意使用它的。
     对Cookie技术期待了这么久的结果是,迫使许多浏览器开发商在它们的浏览器中提供了对Cookie的灵活性控制功能。例如,目前的两大主流浏览器Netscape Navigator 和 Internet Explorer是这样处理Cookie的:Netscape Navigator4.0不但可以接受Cookie进行警告,而且还可以屏蔽掉Cookie;InternetExplorer3.0也可以屏蔽Cookie,但在Internet Explorer4.0中就只能进行接受警告而没有提供屏蔽选项,不过在Internet Explorer4.0之后的更新版本中又加入了屏蔽Cookie的功能选项。
     此外,很多最新的技术甚至已经可以在不能屏蔽Cookie的浏览器上进行Cookie的屏蔽了。例如,可以通过将Cookie文件设置成不同的类型来限制Cookie的使用。但是,非常不幸地是,要是你想完全屏蔽Cookie的话,肯定会因此拒绝许多的站点页面。因为当今已经有许多Web站点开发人员爱上了Cookie技术的强大功能,例如Session对象的使用就离不开Cookie的支持。


2、Cookie工作原理?
    当客户访问某个基于PHP技术的网站时,在PHP中可以使用setcookie函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在C:\Documents and Settings\用户名\Cookies目录下。cookie是 HTTP标头的一部分, 因此setcookie函数必须在任何内容送到浏览器之前调用。这种限制与header()函数一样(如需了解head()函数,请自行查阅)。当客户再次访问该网站时,浏览器会自动把C:\Documents and Settings\用户名\Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。在PHP5中,客户端发来的cookie将被转换成全局变量。你可以通过$_COOKIE[‘xxx’]读取。

     尽管今天仍有一些网络用户对于Cookie的争论乐此不倦,但是对于绝大多数的网络用户来说还是倾向于接受Cookie的。因此,我们尽可以放心地使用Cookie技术来开发我们的WEB页面。

3、Cookie常见函数
● SetCookie 函数创建了一个Cookie,并且把它附加在HTTP头的后面。必须注意的一点是:Cookie是HTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在任何属于HTML文件本身的内容输出之前调用SetCookie函数,调用该函数前即使有空格、空白行都不行。如果setCookie()认了第二,就没有哪个元素敢认第一。使用setcookie()函数的前提是客户浏览器支持cookie,如果客户将之禁用的话,setcookie()也就英雄无用武之地了。
   int SetCookie(string name, string value, int expire, string path, string domain, int secure,bool httponly);  
参数说明:
   name;设置cookie变量的名称。
   value;设置cookie的值。
   expire;设置cookie过期时间。如果要把cookie保存为浏览器进程,即浏览器关闭后就失效。那么可以直接把expiretime设为0。Eg:setcookie(“name”,”value”,0)。该参数不设置的话,关闭浏览器也能结束一个cookie。
    path:表示web服务器上的目录,默认为被调用页面所在目录. 这里还有一点要说明的,比如你的站点有几个不同的目录(比如一个购物目录,一个论坛目录),那么如果只用不带路径的Cookie的话,在一个目录下的页面里设的Cookie在另一个目录的页面里是看不到的,也就是说,Cookie是面向路径的。实际上,即使没有指定路径,WEB服务器会自动传递当前的路径给浏览器的,指定路径会强制服务器使用设置的路径。解决这个问题的办法是在调用SetCookie时加上路径和域名,域名的格式可以是“http://www.phpuser.com/”,也可是“.phpuser.com”。 SetCookie函数里表示value的部分,在传递时会自动被encode,也就是说,如果value的值是“test value”在传递时就变成了“test%20value”,跟URL的方法一样。当然,对于程序来说这是透明的,因为在PHP接收Cookie的值时会自动将其decode。

    domain:cookie可以使用的域名,默认为被调用页面的域名。这个域名必须包含两个".",所以如果你指定你的顶级域名,你必须用".mydomain.com" 。设定域名后,必须采用该域名访问网站cookie才有效。如果你使用多个域名访问该页,那么这个地方可以为空或者访问这个cookie的域名都是一个域下面的。
    secure:如果设为"1",表示cookie只能被用户的浏览器认为是安全的服务器所记住。
    除了name之外所有的参数都是可选的。value,path,domain三个参数可以用空字符串""代换,表示没有设置;expire 和 secure两个参数是数值型的,可以用0表示。expire参数是一个标准的Unix时间标记,可以用time()或mktime()函数取得,以秒为单位。secure参数表示这个Cookie是否通过加密的HTTPS协议在网络上传输。
    httponly:如果设为1,则表示cookie只能被http协议所使用,任何脚本语言,比如javascrīpt是不能获取PHP所创建的cookie的,这就有效削弱了来自XSS的攻击。(注意了:这是PHP5才有的选项,咱也没有用过。看了官方手册尝试着翻译的,如有疑问,请参考官方手册。)
   当前设置的Cookie不是立即生效的,而是要等到下一个页面或刷新后才能看到.这是由于在设置的这个页面里Cookie由服务器传递给客户浏览器,在下一个页面或刷新后浏览器才能把Cookie从客户的机器里取出传回服务器的原因。

小道消息

16岁德国学生通过cookie破解Hotmail
    德国16岁学生Adriaan Graas对于网络安全以及Web开发很有兴趣,他还发现了Hotmail破解之道。在一周多之后的今天,微软还未修复该漏洞。
    这名小黑客的想法很简单,当用户登陆Hotmail时,系统将会生成一个cookie方便下次登陆。由于该cookie并未绑定IP,因此黑客可以假冒这些cookie并用于登陆,甚至不需要知道受害人的密码甚至email地址。通过XSS黑客可以插入一段javascrīpt代码,利用log scrīpt将cookie发送到某个web服务器,脚本可以通过PHP,ASP,CGI等语言编写。

Cookie应用案例:
●创建一个cookie:
SetCookie()
●创建cookie数组:
其一:
SetCookie("CookieArray[]", "Value 1");
SetCookie("CookieArray[]", "Value 2");
其二:
SetCookie("CookieArray[0]", "Value 1");
SetCookie("CookieArray[1]", "Value 2");
● 接收和处理Cookie

PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟GET,POST变量的原则一样,特别简单。
比如设置一个名为MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个可直接使用的全局变量,名为$_COOKIE[‘MyCookie’],这个变量的值就是Cookie的值。数组同样适用。
分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)
echo $_COOKIE[‘MyCookie’];
取出cookie数组的例子:
<?php
// 创建一个cookie数组
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");
// 页面刷新之后,用foreach提取cookie数组。
if (isset($_COOKIE['cookie'])) {
foreach ($_COOKIE['cookie'] as $name => $value) {
   echo "$name : $value <br />\n";
}
}
?&gt;
就这么简单。
删除Cookie
    要删除一个已经存在的Cookie,有两个办法:
1、调用只带有name参数的SetCookie,那么名为这个name的Cookie将被从关系户机上删掉;
setcookie(“MyCookie”); //删除MyCookie。
2、设置Cookie的失效时间为time()或time()-1//time()减多少没有关系啦,只要是过期时间就行//,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。例如:
    setcookie(“MyCookie”,”Value”,time()-1); //删除MyCookie。
要注意的是,当一个Cookie被删除时,它的值在当前页在仍然有效的。
    如果要把cookie保存为浏览器进程,即浏览器关闭后就失效。那么可以直接把expiretime设为0。例如:setcookie(“name”,”value”,0)。该参数不设置的话,关闭浏览器也能结束一个cookie。

Cookie注意事项
1、SetCookie()之前不能有任何html输出,它认了第二,没有哪个元素敢认第一,就是空格,空白行都不行。
2、SetCookie()后,你在当前页调用echo $_COOKIE["name"]不会有输出。必须刷新或到下一个页面才可以看到Cookie值。原因很简单。SetCookie()执行之后,往客户端发送一个cookie,你不刷新或浏览下一个页面,客户端怎么把cookie给你送回去呀?浏览器创建了一个Cookie后,对于每一个针对该网站的请求,都会在Header中带着这个Cookie;不过,对于其他网站的请求Cookie是绝对不会跟着发送的。而且浏览器会这样一直发送,直到Cookie过期为止。
3、使用Cookie的限制。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。 (这是书上看到的说法,应该是一个web站点能创建的Cookie不能超过30个吧,要不然,我机子里的cookie少说也上百了,请达人指教!)
4、Cookie是保存在客户端的,用户禁用了Cookie,你的Cookie自然也就没作用啦!现在的浏览器,每当咱发送一个Cookie给客户端,他就像看门狗一样给拦截住了,并询问用户是否允许Cookie进门。天,用户又不是专家,有几个人知道啥叫Cookie呀?搞不好都当病毒拒之门外了。

posted @ 2009-02-02 16:16 小马歌 阅读(279) | 评论 (0)编辑 收藏
 

from:http://hi.baidu.com/wangzengfang/blog/item/c9f97b7b34c6caf00bd18724.html
下面的文章可供参考,但我遇到了几百兆的数量库,几次用此方法都失败,原因是编辑器不能支持这么大的文本文件的编辑,另存为UTF8格式后,再次导入都不成功。

怎么办呢?程序员还是靠程序吧。

从数据库中取出中文字符串来,用函数一看是UTF-8格式的,所有不能再转换为UTF-8格式的了,那怎么办呢?仔细想想,原来的网页显示中文是可行的,这时实际上是在GBK,GB2312编码下的。那我把字符串取出后转换成GBK的,即UTF-8=>BGK,果然可以显示了。注意这时网页中所有的编码都是UTF-8的了,应该跟一般的UTF-8的网页一样可以插入到数据库里了。但是插入记录还是乱码,于是把set names utf8再加上。竟然成功了。

但有个问题:为何字段格式是latin1,却可以gbk显示出来,但检测却是utf-8编码,却在utf-8下显示不出来,必须转换成bgk才可以显示出来?找到一篇强文!http://hi.baidu.com/wangzengfang/blog/item/8563a8f9b56bd25d252df2d7.html


相信 MySQL 的编码对很多人来说 … 一直是个相当令人头痛的问题 … 今天所要做的介绍是如何把数据库的数据, 由 latin1 转成 utf8..

一般 .. MySQL 装起来后(用 rpm 安装) ,系统的默认编码是 latin1.

而很多人在安装一些网页的系统时,如 wordpress、LifeType、phpBB … 等等,都会选择 utf8 。

这时 … 系统一样可以正常运作 … 只是当用 phpmyadmin 进入管理数据库时,就会发现 .. 怎么中文字的部分都变成了歪七扭八 ..

或者一些鬼画符的文字。如:凡事先從工作講起

此现象就是 utf8 的文字以 latin1形式储存,phpmyadmin 以 utf8 的数据读取方式读取 … 读出来的数据就是这种鬼画符…><。

若要解决 phpmyadmin 读出的鬼画符 … 有两个方法:

1. 进入 phpmyadmin 内一个名为 libraries 的子目录 .. 编辑 select_lang.lib.php. 找到 $mysql_charset_map 这一段下方 ..

‘utf-8′ => ‘utf8′,把它改成‘utf-8′ => ‘latin1′,

然后存盘 … 这时候就可以发现原先的鬼画符 … 这时候又都正常了.

2. 把数据库的编码转成 utf8 …

步骤:

a. 把数据库 dump 出来

mysqldump -u xxx -p database > database.sql –default-character-set=latin1

这时候 dump 出来的 database.sql 是 latin1 的文件格式,然而是 utf8 的文字数据,因此这时若用 vi 开档看它 …

还是会发现中文字是鬼画符 … 这时不要被眼前的假象所骗 … 以为自己做错 .. 几接着做下一步骤。

b. 把 dump 出来的 database.sql 下载回去 .. 用 emEditor或者editplus等支持保存文件时可选择文件存储格式的编辑器把 database.sql 打开,

它可以正常识别 utf8 的文字 ..用字符串替换的功能,把 “latin1” 都替换成 “utf8” ,之后直接另存新档 .. 这时把文件类型设定储存成 UTF-8。

c. 再把 database-utf8.sql 上传到 server .. 这时我们用 vi 开启它 .. 就可以看见是正常的中文字 .. 这就表示档案没问题啰。

d. 把档案汇入数据库

mysql database < database-utf8.sql -u xxx -p --default-character-set=utf8

注意你的database名称,如果你想把数据导入到另外一个数据库中时,因为你想保留原来的数据库中的数据。那你应该先自己建立一个空的数据库。这条命令并不能在数据库不存在的情况下建立数据库。

如果数据量不是很大 … 那么很快就可以完成这个步骤 .. 这时候若没有错误讯息出现 .. 那么恭喜你 ..

你已经完成了数据库转换的工作了。如果有错误讯息出现 .. 主要有两个情形 ..

1. 文件文件内的中文字,用 vi 看是乱码 ..文件档的格式不是 utf-8。

2. 汇入的时候漏掉指定采用 utf8 的数据编码汇入。

以上的作业是在 数据库系统都是处于 latin1 的环境底下,也就是没有在 my.cnf 指定 default-character-set=utf8。

posted @ 2009-01-24 10:56 小马歌 阅读(3374) | 评论 (0)编辑 收藏
 
from:http://hi.baidu.com/wszxg8866/blog/item/023e3e32f6ada3ff1b4cff34.html

mysql+php产生乱码原因:
  1. mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.
  2. MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
  3. MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
  4. 用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.
  5. 如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.
  6. PHP页面字符集不正确.
  7. PHP连接MYSQL数据库语句指定的编码不正确.
注意:
        很多人都怀疑mysql版本不一致会导致乱码,相信看了本说明你就不会这样认为了.
          平时你在某些网站看到的文字可能有几种编码, 如你看到一个繁体字,它有可能是big5编码,也有 可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.
如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法:
  • 将网站编码设为 utf-8,这样可以兼容世界上所有字符,
  • 如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为 GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK. 

  •          使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了.

    mysql+php产生乱码的解决办法:

  1. 如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题
  2. 修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:

    ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
    以上命令就是将test数据库的编码设为utf8.
  3. 修改表的编码:

    ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
    以上命令就是将一个表category的编码改为utf8.
  4. 修改字段的编码:

    ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
    以上命令就是将test表中 dd的字段编码改为utf8.
  5. 如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.
  6. 这种情况也是修改页面charset即可.
  7. 在连接数据库的语句中.
                          mysql_connect('localhost','user','password');
                          mysql_select_db('my_db');
                          mysql_query("set names utf8;");     //select 数据库之后加多这一句

                          为了避免PHP页面乱码的发生,PHP页面开始第一句
                          header("content-type:text/html; charset=utf-8");
                          //强行指定页面的编码,以避免乱码
posted @ 2009-01-24 10:44 小马歌 阅读(137) | 评论 (0)编辑 收藏
 
from:http://hi.baidu.com/jackywdx/blog/item/c60ce9d4af063105a18bb7fb.html

mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。
不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。

mb_convert_encoding的用法见官方:
http://cn.php.net/manual/zh/function.mb-convert-encoding.php

做一个GBK To UTF-8
< ?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK");
?>

再来个GB2312 To Big5
< ?php
header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312");
?>
不过要使用上面的函数需要安装但是需要先enable mbstring 扩展库。

PHP中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似。

下面还有一些详细的例子:
iconv — Convert string to requested character encoding
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding
(PHP 4 >= 4.0.6, PHP 5)

用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;


string iconv ( string in_charset, string out_charset, string str )
注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.


使用:

发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.

一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.

from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used.
/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */
$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);
/* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */
$str = mb_convert_encoding($str, “EUC-JP”, “auto”);

例子:
$content = iconv(”GBK”, “UTF-8″, $content);
$content = mb_convert_encoding($content, “UTF-8″, “GBK”);
posted @ 2009-01-24 10:43 小马歌 阅读(644) | 评论 (0)编辑 收藏
 

安装MySQL
groupadd mysql
useradd -g mysql mysql
tar -zxvf mysql-5.0.45.tar.gz
cd mysql-5.0.45
./configure --prefix=/server/mysql
make
make install
/server/mysql/bin/mysql_install_db   --user=mysql   --force
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 700 /etc/rc.d/init.d/m
chkconfig --add mysqld
cd /server/mysql
chown -R mysql var
chgrp -R mysql .
/server/mysql/bin/mysqld_safe --user=mysql &
/server/mysql/bin/mysqladmin -u root password '7766506'
/server/mysql/bin/mysql -u root -p

安装Apache
tar -zvxf httpd-2.2.4.tar.gz
cd httpd-2.2.4
./configure --prefix=/server/httpd\
--enable-rewrite=shared\
--enable-speling=shared\
--enable-module=shared\
--enable-track-vars\
--with-config-file-path=/server/httpd/conf\
--enable-so\
--enable-mods-shared=most
make
make install
/server/httpd/bin/apachectl start


安装GD库(GIF,PNG,JPEG)
a.安装jpeg
tar -zvxf jpegsrc.v6b.tar.gz
cd jpeg-6b
mkdir /usr/local/lib/bin
mkdir /usr/local/lib/lib
mkdir /usr/local/lib/include
mkdir /usr/local/lib/man
mkdir /usr/local/lib/man/man1
./configure --prefix=/usr/local/lib/ --enable-shared --enable-static
make
make install

b.安装libpng
tar -zvxf libpng-1.2.20.tar.gz
cd libpng-1.2.20
cp scripts/makefile.linux makefile
make test
make install

c.安装freetype
tar -zvxf freetype-2.3.5.tar.gz
cd freetype-2.3.5
./configure --prefix=/usr/local/lib/
make
make install

d.安装zlib
tar -zxvf zlib-1.2.3.tar.gz
cd zlib.1.2.3
./configure --prefix=/usr/local/lib/
make
make install

e.安装GD库
tar -zvxf gd-2.0.34.tar.gz
mkdir -p /usr/local/lib/gd
cd gd-2.0.34
./configure --prefix=/usr/local/lib/
--with-jpeg=/usr/local/lib/
--with-png=/usr/local/lib/
--with-zlib=/usr/local/lib/
--with-freetype=/usr/local/lib/
make
make install


安装php5
a.安装libxml
tar -zxf libxml2-2.6.11.tar.gz
cd libxml2-2.6.11
./configure --prefix=/usr/local/lib/
make
make install


c.安装php5
tar -zvxf php-5.2.4.tar.gz
cd php-5.2.4
./configure
--prefix=/server/php
--with-apxs2=/server/httpd/bin/apxs
--with-mysql=/server/mysql/
--with-config-file-path=/server/php/lib/php.ini(此格式可省略)
--with-libxml-dir=/usr/local/lib/
--with-gd=/usr/local/lib/
--with-jpeg-dir=/usr/local/lib/
--with-zlib-dir=/usr/local/lib/
--with-png=/usr/local/lib/
--with-freetype-dir=/usr/local/lib/
--enable-mbstring --enable-sockets
make
make install
cp php.ini-dist /usr/local/php/lib/php.ini
vi /server/php/lib/php.ini
vi /server/httpd/conf/httpd.conf

posted @ 2009-01-22 12:54 小马歌 阅读(606) | 评论 (1)编辑 收藏
 

 现在国内主流的MP4机器,都宣称可以直接播放RMVB和FLV。 我比较关心FLV,就是YOUTUBE、土豆、优酷上的视频格式。

不过,FLV也分FLV1和FLV4二种格式。(二者的文件后缀名都是FLV,但在电脑上用KMPLAYER播放时,FLV4的文件会有提示)

FLV1主要在欧美和中国的视频网站流行,特点是体积小,在线播放流畅,但清晰度低。

而FLV4是近年在日、韩视频网站开始流行的新格式,特点是解析度普遍在400*300以上,同等画面尺寸下,要比FLV1清晰得多,色彩饱和度也特别浓郁。缺点是,文件比较大,在线播放经常停顿。

我从日韩视频网站上搜集、下载了不少日韩歌星MV的FLV视频,格式当然是FLV4的。 很想知道,国内的MP4是否能直接播放FLV4的格式?

恳请有知道的朋友能指点一下

问题补充:不好意思,我不是笼统地指MP4是否支持FLV,而是特指FLV4格式,因为我知道是有几款MP4支持FLV1。

据说,二种FLV的视频编码格式不同,FLV1的视频编码格式是Sorenson H.263或H.264,而FLV4则是ON2 VP6 。

FLV4在线视频片段观赏:
http://tclon2.com/index.htm


MC目前还办不到,我见过FLV4格式,是比较清楚。
你可以用MC转成MP4(H.264+AAC),再修改后缀为FLV,FLASH播放器可以直接调用播放,效果同样非常好,不比On2VP6+MP3差.

On2 VP6-S 高清视频
On2 VP6-S编码器是Adobe Flash Player的新伙伴,专为播放高清内容而设。比较H.264 (AVC)及其他同类技术,为 Adobe® Flash® Player 而设的On2 VP6-S能以较低的数据传输率及处理器利用率,输出一流的高清影像。

压制flv4视频参考地址:http://sk.sosg.net/post/45.htm
On2 VP6和Sorenson Spark 视频编解码器比较:http://hi.baidu.com/jinzhou_shi/blog/item/0b249beffbde2c32adafd501.html
土豆网为网络视频选用On2 VP6技术,有效节省带宽成本:http://www.eetchina.com/ART_8800558976_621496_NT_ae7228dc.HTM

posted @ 2009-01-19 14:51 小马歌 阅读(8697) | 评论 (4)编辑 收藏
 
手机专用视频格式 3GP
  3GP概述
  3GP是一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是目前手机中最为常见的一种视频格式。
  目前,市面上一些安装有Realplay播放器的智能手机可直接播放后缀为rm的文件,这样一来,在智能手机中欣赏一些rm格式的短片自然不是什么难事。然而,智能手机毕竟是少数,大部分手机并不支持rm格式的短片,若要在这些手机上实现短片播放则必须采用一种名为3GP的视频格式。目前有许多具备摄像功能的手机,拍出来的短片文件其实都是以3GP为后缀的,如诺基亚6230、摩托罗拉V600、阿尔卡特OT756等。下文将介绍如何制作适合手机播放的3GP文件。
  在目前上市的一些智能手机或者支持视频拍摄的手机中我们往往能看到所谓支持3GPP格式图象,那么什么是3GPP格式呢?简单的说,该格式是“第三代合作伙伴项目”(3GPP)制定的一种多媒体标准,使用户能使用手机享受高质量的视频、音频等多媒体内容。其核心由包括高级音频编码 (AAC)、自适应多速率 (AMR) 和MPEG-4 和 H.263 视频编码解码器等组成,目前大部分支持视频拍摄的手机都支持3GPP格式的视频播放。
  转换工具是关键
  在整个制作过程中,首先要下载将通常格式的视频文件转为3GP的工具,在这里记者推荐诺基亚的NOKIA multimedia converter Pro V2.0,这是诺基亚专门编写的压制工具,可以把AVI、MPG等格式的视频文件直接转换成手机上能看的3GP文件。
  下载后按步骤安装。安装完毕后双击文件MMConverterPro.exe即可打开软件主界面。
  在界面的中上方,有Video和Audio两个按键,点击后可分别进入各自的界面。其中的Video界面是本文的主题,使用者可以在这里将各种格式的视频文件转换为适于手机播放的3GP。至于Audio,顾名思义是制作音乐的界面,使用者在此可将电脑常用的mp3文件转为适合手机彩信发送和存储的AMR格式。同时,通过这个方法也可以制作AMR格式的真人铃声。
  除了诺基亚专用的转换工具以外推荐的一款通用的转换工具:Xilisoft Video Converter 这款软件优点:可以在DVD、VCD、SVCD、MOV、RM、AVI、MPEG、WMV、3GP、MP4等格式间相互转换,你可以指定视频和音频编码器、设置各项输出参数,其重要之处在于:可以从视频文件转换出任意流行的音频文件,诸如MP2、MP3、AC3、RA、M4A等。此工具支持多线程,可以同时进行多个文件的转换,所有的转换过程都非常简明快捷。
  转换软件操作简单
  Windows Moive Maker制作的短片格式为WMV,需要再用WMV to AVI MPEG VCD SVCD DVD Converter将其转为AVI或MPG格式,转换方法可参照工具附带的说明书,相当简便。随即进入最后步骤,制作3GP格式的手机短片。
  1、在NOKIA multimedia converter Pro V2.0的主界面中选择File→Open→选择截取好的短片。
  2、打开短片后,界面中间原本字体为灰色的convert按键会变为黑色,点击convert,键入文件名、选好存放路径,按下“保存”键即可。
  3、转换成功后,你可以点击右面界面的播放键来预览制作完成的3GP影片了,此时你还会发现现在的文件比原来的要小得多。
  3GP是一个多媒体储存格式, 由3GPP所定义并为3G手机所使用. 它是一个简化的MPEG-4 Part 14 (MP4) 版本. 3GP版本的档案附档名为 .3gp 或 .3g2
  3GP是以MPEG-4 or H.263格式储存影像串流(video streams),并以AMR-NB or AAC-LC 格式储存声音串流(audio streams)。3GP档案永远为big-endian,储存以及转换从最高位元开始(the most significant bytes first)。3GP亦定义影像的大小以及带宽, 所以内容可以正确的缩至手机萤幕显示的大小。
  透过合适的多媒体播放软件,3GP档案亦可以在个人电脑上观看。支援3GP格式的多媒体播放软件计有:Media Player Classic、MPlayer、QuickTime、RealPlayer、VLC Player、Xine及Zoom Player。
  3GP影像档案可使用3GP Video Converter 或使用 MPEG Streamclip 和QuickTime Alternative 并用的方式,以转换至多种其他格式,大多数有3G功能的电话已支援这种格式, 甚至在撷取影像时就是使用此种格式。在PC萤幕显示的品质与在手机萤幕显示的品质类似. 通常保全摄影机会使用此种格式, 以便可在一小块区域显示注脚。这也是为何手机使用3GP格式的原因。
  简单编辑电影片断
  虽然相比一些常见的视频文件,3GP所占的内存非常小,但由于手机内存限制,长时间、大容量的电影并不适合通常的手机播放。所以在选取影片时制作者要特别留意,如果是常见的4-5分钟长短的MTV(音乐电视)短片大可放心压缩;如果要截取电影的片断则需要借助其他工具,如Windows Moive Maker进行简单编辑。
  1、打开Windows Moive Maker,选择文件→导入→在电脑中寻找需要剪切的影片→双击打开。
  2、此时软件会读取影片信息,时间依影片大小而定,在进度条达到100%时即可,软件界面的中间会显示“剪辑1”。
  3、点选“剪辑1”,此时在软件界面的右方会显示影片播放信息,将下方的滑块移至你想剪辑片断的开始处,点选界面顶部工具栏中的“剪辑”,选择“分割”,此时会生成“剪辑1(1)”文件。
  4、点选“剪辑1(1)”,将滑块移至你想剪辑片断的结尾处,再此处点选界面顶部工具栏中的“剪辑”、“分割”,此时将生成“剪辑1(2)”。
  5、经过两次分割后的“剪辑1(1)”即为你所想要截取的影片,在“剪辑1(1)”上选择“添加到情节提要”,最后选择文件→保存电影。
  在现时市面上提供手机画像的电话所使用的标准,有以下两个:
  3GPP(GSM手机使用的标准)
  3GPP2(CDMA手机使用的标准)
  两者都是基于相同的编码标准:影像方面采用MPEG-4及H.263,而声音则采用AAC或AMR标准。
  推荐一个专业的压缩3GP格式的软件,
  软件名称:Allok Video to 3GP Converter
  大小:4951KB
  软件简介:
  Allok 公司出品的专为手机 3GP 视频设计的媒体转换器。此软件使用 H263/MPEG4/XviD 这三种编解码器,你的手机至少支持其中之一吧?
  转换时的输入格式目前支持几乎所有主流的音频视频格式:*.avi;*.mpg;*.divx;*.div;*.xvid;*.mpeg;*.wmv;*.asf;*.asx;*.mpe;*.m1v;*.m2v;*.dat;*.mp4;*.m4v;*.dv;*.dif;*.mjpg;*.mjpeg;*.mov;*.qt;*.rm;*.rmvb;*.3gp;*.3g2;*.h261;*.h264;*.yuv;*.raw;*.flv;*.swf;*.vob;*.mkv;*.ogm;
  可以将它们转换为:
  3GP + AMR 格式(*.3gp)、3GP + AAC 格式(*.3gp)、3GP2 + AAC 格式(*.3g2)、MPEG-4 视频格式(*.mp4)、AVI 视频格式 (*.avi)、DivX 视频格式(*.avi)
  特色功能:
  支持视频分割,帮助您去粗取精,可以只保留你最喜爱的片段;
  允许导入外挂的各种字幕文件、支持所有的主流字幕文件格式。
  特别推荐各位朋友使用这个软件压缩你手机适合的手机电影,过几天我再写一个此软件详细的使用教程。请各位朋友耐心等待!
  专业网站
  可以去下面几个网站下载3gp手机电影:
  http://www.Sky3gp.com http://www.anwang.net http://www.3la3la.com http://www.fuwabbs.cn http://www.hao3gp.com http://www.3gp2.com http://www.513gp.com http://www.523gp.cn
ASF
  ASF 是 Advanced Streaming format 的缩写,由字面(高级流格式)意思就应该看出这个格式的用处了吧。说穿了 ASF 就是 MICROSOFT 为了和现在的 Real player 竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式!由于它使用了 MPEG4 的压缩算法,所以压缩率和图像的质量都很不错。因为 ASF 是以一个可以在网上即时观赏的视频“流”格式存在的,所以它的图像质量比 VCD 差一点点并不出奇,但比同是视频“流”格式的 RAM 格式要好。不过如果你不考虑在网上传播,选最好的质量来压缩文件的话,其生成的视频文件比 VCD (MPEG1)好是一点也不奇怪的,但这样的话,就失去了 ASF 本来的发展初衷,还不如干脆用 N AVI 或者 DIVX 。但微软的“子第”就是有它特有的优势,最明显的是各类软件对它的支持方面就无人能敌。
n AVI
  n AVI 是 newAVI 的缩写,是一个名为 ShadowRealm 的地下组织发展起来的一种新视频格式。它是由 Microsoft ASF 压缩算法的修改而来的(并不是想象中的 AVI),视频格式追求的无非是压缩率和图像质量,所以 NAVI 为了追求这个目标,改善了原始的 ASF 格式的一些不足,让 NAVI 可以拥有更高的帧率(frame rate)。当然,这是牺牲 ASF 的视频流特性作为代价的。概括来说, NAVI 就是一种去掉视频流特性的改良型 ASF 格式!再简单点就是---非网络版本的 ASF !
AVI
  AVI 是 Audio Video Interleave 的缩写,这个看来也不用我多解释了,这个微软由 WIN3.1 时代就发表的旧视频格式已经为我们服务了好几个年头了。如果这个都不认识,我看你还是别往下看了,这个东西的好处嘛,无非是兼容好、调用方便、图像质量好,但缺点我想也是人所共知的:尺寸大!就是因为这点,我们现在才可以看到由 MPEG1 的诞生到现在 MPEG4 的出台。
MPEG
  MPEG 是 Motion Picture Experts Group 的缩写,它包括了 MPEG-1, MPEG-2 和 MPEG-4 (注意,没有MPEG-3,大家熟悉的MP3 只是 MPEG Layeur 3)。MPEG-1相信是大家接触得最多的了,因为它被广泛的应用在 VCD 的制作和一些视频片段下载的网络应用上面,可以说 99% 的 VCD 都是用 MPEG1 格式压缩的,(注意 VCD2.0 并不是说明 VCD 是用 MPEG-2 压缩的)使用 MPEG-1 的压缩算法,可以把一部 120 分钟长的电影(未视频文件)压缩到 1.2 GB 左右大小。MPEG-2 则是应用在 DVD 的制作(压缩)方面,同时在一些 HDTV(高清晰电视广播)和一些高要求视频编辑、处理上面也有相当的应用面。使用 MPEG-2 的压缩算法压缩一部 120 分钟长的电影(未视频文件)可以到压缩到 4 到 8 GB 的大小(当然,其图像质量等性能方面的指标 MPEG-1 是没得比的)。MPEG-4 是一种新的压缩算法,使用这种算法的 ASF 格式可以把一部 120 分钟长的电影(未视频文件)压缩到 300M 左右的视频流,可供在网上观看。其它的 DIVX 格式也可以压缩到 600M 左右,但其图像质量比 ASF 要好很多。
DIVX
  DIVX 视频编码技术可以说是一种对 DVD 造成威胁的新生视频压缩格式(有人说它是 DVD 杀手),它由 Microsoft mpeg4v3 修改而来,使用 MPEG4 压缩算法。同时它也可以说是为了打破 ASF 的种种协定而发展出来的。而使用这种据说是美国禁止出口的编码技术 --- MPEG4 压缩一部 DVD 只需要 2 张 CDROM!这样就意味着,你不需要买 DVD ROM 也可以得到和它差不多的视频质量了,而这一切只需要你有 CDROM 哦!况且播放这种编码,对机器的要求也不高,CPU 只要是 300MHZ 以上(不管你是PII,CELERON,PIII,AMDK6/2,AMDK6III,AMDATHALON,CYRIXx86)在配上 64 兆的内存和一个 8兆 显存的显卡就可以流畅的播放了。这绝对是一个了不起的技术,前途不可限量!
QuickTime
  QuickTime(MOV)是 Apple(苹果)公司创立的一种视频格式,在很长的一段时间里,它都是只在苹果公司的 MAC 机上存在。后来才发展到支持 WINDOWS 平台的,但平心而论,它无论是在本地播放还是作为视频流格式在网上传播,都是一种优良的视频编码格式。到目前为止,它共有 4 个版本,其中以 4.0 版本的压缩率最好!
REAL VIDEO
  REAL VIDEO (RA、RAM)格式由一开始就是定位就是在视频流应用方面的,也可以说是视频流技术的始创者。它可以在用 56K MODEM 拨号上网的条件实现不间断的视频播放,当然,其图像质量和 MPEG2、DIVX 等比是不敢恭维的啦。毕竟要实现在网上传输不间断的视频是需要很大的频宽的,这方面 ASF 的它的有力竞争者!
RMVB
  所谓RMVB格式,是在流媒体的RM影片格式上升级延伸而来。VB即VBR,是Variable Bit Rate(可改变之比特率)的英文缩写。我们在播放以往常见的RM格式电影时,可以在播放器左下角看到225Kbps字样,这就是比特率。影片的静止画面和运动画面对压缩采样率的要求是不同的,如果始终保持固定的比特率,会对影片质量造成浪费。
  而RMVB则打破了原先RM格式那种平均压缩采样的方式,在保证平均压缩比的基础上,设定了一般为平均采样率两倍的最大采样率值。将较高的比特率用于复杂的动态画面(歌舞、飞车、战争等),而在静态画面中则灵活地转为较低的采样率,合理地利用了比特率资源,使RMVB在牺牲少部分你察觉不到的影片质量情况下最大限度地压缩了影片的大小,最终拥有了近乎完美的接近于DVD品质的视听效果,如图1所示的就是RMVB格式的《圣斗士冥王篇》。可谓体积与清晰度“鱼与熊掌兼得”,其发展前景不容小觑。
  相较DVDrip而言,RMVB的优势不言而喻。首先在保证影片整体视听效果的前提下,RMVB的个头只有300~450MB左右(以90分钟的标准电影计算),而DVDrip却需要700MB甚至更多;其次RMVB的字幕为内嵌字幕,不像DVDrip那样要安装调试字幕外挂软件,有时还会出现乱码;更重要的是RMVB的影音播放只需一次性安装完解码器,以后无论影像还是音效都无需另行调试。而DVDrip却视频、音频解码一大堆,设置不当还会造成音画不同步、花屏失声等等毛病。
本地影像视频
  ●AVI格式:它的英文全称为Audio Video 文件后缀名:*.avi
  Interleaved,即音频视频交错格式。它于1992年被Microsoft公司推出,随Windows3.1一起被人们所认识和熟知。所谓“音频视频交错”,就是可以将视频和音频交织在一起进行同步播放。这种视频格式的优点是图像质量好,可以跨多个平台使用,其缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一,最普遍的现象就是高版本Windows媒体播放器播放不了采用早期编码编辑的AVI格式视频,而低版本Windows媒体播放器又播放不了采用最新编码编辑的AVI格式视频,所以我们在进行一些AVI格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题,如果用户在进行AVI格式的视频播放时遇到了这些问题,可以通过下载相应的解码器来解决。
  ●nAVI格式:nAVI是newAVI的缩写,是一个名为ShadowRealm的地下组织发展起来的一种新视频格式(与我们上面所说的AVI格式没有太大联系)。它是由Microsoft
  ASF压缩算法的修改而来的,但是又与下面介绍的网络影像视频中的ASF视频格式有所区别,它以牺牲原有ASF视频文件视频“流”特性为代价而通过增加帧率来大幅提高ASF视频文件的清晰度。
  ●DV-AVI格式:DV的英文全称是Digital Video
  Format,是由索尼、松下、JVC等多家厂商联合提出的一种家用数字视频格式。目前非常流行的数码摄像机就是使用这种格式记录视频数据的。它可以通过电脑的IEEE
  1394端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。这种视频格式的文件扩展名一般是.avi,所以也叫DV-AVI格式。
  ●MPEG格式:它的英文全称为Moving Picture Expert
  Group,即运动图像专家组格式,家里常看的VCD、SVCD、DVD就是这种格式。MPEG文件格式是运动图像压缩算法的国际标准,它采用了有损压缩方法减少运动图像中的冗余信息,说的更加明白一点就是MPEG的压缩方法依据是相邻两幅画面绝大多数是相同的,把后续图像中和前面图像有冗余的部分去除,从而达到压缩的目的(其最大压缩比可达到200:1)。目前MPEG格式有三个压缩标准,分别是MPEG-1、MPEG-2、和MPEG-4,另外,MPEG-7与MPEG-21仍处在研发阶段。
  MPEG-1:制定于1992年,它是针对1.5Mbps以下数据传输率的数字存储媒体运动图像及其伴音编码而设计的国际标准。也就是我们通常所见到的VCD制作格式。使用MPEG-1的压缩算法,可以把一部120分钟长的电影压缩到1.2GB左右大小。这种视频格式的文件扩展名包括.mpg、.mlv、.mpe、.mpeg及VCD光盘中的.dat文件等。
  MPEG-2:制定于1994年,设计目标为高级工业标准的图像质量以及更高的传输率。这种格式主要应用在DVD/SVCD的制作(压缩)方面,同时在一些HDTV(高清晰电视广播)和一些高要求视频编辑、处理上面也有相当的应用。使用MPEG-2的压缩算法,可以把一部120分钟长的电影压缩到4到8GB的大小。这种视频格式的文件扩展名包括.mpg、.mpe、.mpeg、.m2v及DVD光盘上的.vob文件等。
  MPEG-4:制定于1998年,MPEG-4是为了播放流式媒体的高质量视频而专门设计的,它可利用很窄的带度,通过帧重建技术,压缩和传输数据,以求使用最少的数据获得最佳的图像质量。目前MPEG-4最有吸引力的地方在于它能够保存接近于DVD画质的小体积视频文件。另外,这种文件格式还包含了以前MPEG压缩标准所不具备的比特率的可伸缩性、动画精灵、交互性甚至版权保护等一些特殊功能。这种视频格式的文件扩展名包括.asf、.mov和DivX ,AVI等。
  小提示:细心的用户一定注意到了,这中间怎么没有MPEG-3编码?实际上,大家熟悉的MP3就是采用的MPEG-3(MPEG
  Layeur3)编码。
  ●DivX格式:这是由MPEG-4衍生出的另一种视频编码(压缩)标准,也即我们通常所说的DVDrip格式,它采用了MPEG4的压缩算法同时又综合了MPEG-4与MP3各方面的技术,说白了就是使用DivX压缩技术对DVD盘片的视频图像进行高质量压缩,同时用MP3或AC3对音频进行压缩,然后再将视频与音频合成并加上相应的外挂字幕文件而形成的视频格式。其画质直逼DVD并且体积只有DVD的数分之一。这种编码对机器的要求也不高,所以DivX视频编码技术可以说是一种对DVD造成威胁最大的新生视频压缩格式,号称DVD杀手或DVD终结者。
  ●MOV格式:美国Apple公司开发的一种视频格式,默认的播放器是苹果的QuickTimePlayer。具有较高的压缩比率和较完美的视频清晰度等特点,但是其最大的特点还是跨平台性,即不仅能支持MacOS,同样也能支持Windows系列。
网络影像视频
  ●ASF格式:它的英文全称为Advanced Streaming format,它是微软为了和现在的Real
  Player竞争而推出的一种视频格式,用户可以直接使用Windows自带的Windows Media
  Player对其进行播放。由于它使用了MPEG-4的压缩算法,所以压缩率和图像的质量都很不错(高压缩率有利于视频流的传输,但图像质量肯定会的损失,所以有时候ASF格式的画面质量不如VCD是正常的)。
  ●WMV格式:它的英文全称为Windows Media
  Video,也是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。WMV格式的主要优点包括:本地或网络回放、可扩充的媒体类型、部件下载、可伸缩的媒体类型、流的优先级化、多语言支持、环境独立性、丰富的流间关系以及扩展性等。
  ●RM格式:Real Networks公司所制定的音频视频压缩规范称为Real
  Media,用户可以使用RealPlayer或RealOne
  Player对符合RealMedia技术规范的网络音频/视频资源进行实况转播并且RealMedia可以根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。这种格式的另一个特点是用户使用RealPlayer或RealOne
  Player播放器可以在不下载音频/视频内容的条件下实现在线播放。另外,RM作为目前主流网络视频格式,它还可以通过其Real
  Server服务器将其它格式的视频转换成RM视频并由Real
  Server服务器负责对外发布和播放。RM和ASF格式可以说各有千秋,通常RM视频更柔和一些,而ASF视频则相对清晰一些。
  ●RMVB格式:这是一种由RM视频格式升级延伸出的新视频格式,它的先进之处在于RMVB视频格式打破了原先RM格式那种平均压缩采样的方式,在保证平均压缩比的基础上合理利用比特率资源,就是说静止和动作场面少的画面场景采用较低的编码速率,这样可以留出更多的带宽空间,而这些带宽会在出现快速运动的画面场景时被利用。这样在保证了静止画面质量的前提下,大幅地提高了运动图像的画面质量,从而图像质量和文件大小之间就达到了微妙的平衡。另外,相对于DVDrip格式,RMVB视频也是有着较明显的优势,一部大小为700MB左右的DVD影片,如果将其转录成同样视听品质的RMVB格式,其个头最多也就400MB左右。不仅如此,这种视频格式还具有内置字幕和无需外挂插件支持等独特优点。要想播放这种视频格式,可以使用RealOnePlayer2.0或RealPlayer8.0加RealVideo9.0以上版本的解码器形式进行播放。
  ●FLV视频格式
  FLV 是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式,全称为Flash Video。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。
  目前各在线视频网站均采用此视频格式。如新浪播客、56、土豆、酷6、youtube等,无一例外。FLV已经成为当前视频文件的主流格式。
  FLV就是随着Flash MX的推出发展而来的视频格式,目前被众多新一代视频分享网站所采用,是目前增长最快、最为广泛的视频传播格式。是在sorenson 公司的压缩算法的基础上开发出来的。FLV格式不仅可以轻松的导入Flash 中,速度极快,并且能其到保护版权的作用,并且可以不通过本地的微软或者REAL播放器播放视频。
  常见的视频编码:
  1、Microsoft RLE
  一种8位的编码方式,只能支持到256色。压缩动画或者是计算机合成的图像等具有大面积色块的素材可以使用它来编码,是一种无损压缩方案。
  2、Microsoft Video 1
  用于对模拟视频进行压缩,是一种有损压缩方案,最高仅达到256色,它的品质就可想而知,一般还是不要使用它来编码AVI。
  3、Microsoft H.261和H.263 Video Codec
  用于视频会议的Codec,其中H.261适用于ISDN、DDN线路,H.263适用于局域网,不过一般机器上这种Codec是用来播放的,不能用于编码。
  4、Intel Indeo Video R3.2
  所有的Windows版本都能用Indeo video 3.2播放AVI编码。它压缩率比Cinepak大,但需要回放的计算机要比Cinepak的快。
  5、Intel Indeo Video 4和5
  常见的有4.5和5.10两种,质量比Cinepak和R3.2要好,可以适应不同带宽的网络,但必须有相应的解码插件才能顺利地将下载作品进行播放。适合于装了Intel公司MMX以上CPU的机器,回放效果优秀。如果一定要用AVI的话,推荐使用5.10,在效果几乎一样的情况下,它有更快的编码速度和更高的压缩比。
  6、Intel IYUV Codec
  使用该方法所得图像质量极好,因为此方式是将普通的RGB色彩模式变为更加紧凑的YUV色彩模式。如果你想将AVI压缩成MPEG-1的话,用它得到的效果比较理想,只是它的生成的文件太大了
  7、Microsoft MPEG-4 Video codec
  常见的有1.0、2.0、3.0三种版本,当然是基于MPEG-4技术的,其中3.0并不能用于AVI的编码,只能用于生成支持“视频流”技术的ASF文件。
  8、DivX- MPEG-4 Low-Motion/Fast-Motion
  实际与Microsoft MPEG-4 Video code是相当的东西,只是Low-Motion采用的固定码率,Fast-Motion采用的是动态码率,后者压缩成的AVI几乎只是前者的一半大,但质量要差一些。Low-Motion适用于转换DVD以保证较好的画质,Fast-Motion用于转换VCD以体现MPEG-4短小精悍的优势。
  9 、DivX 3.11/4.12/5.0
  实际上就是DivX,原来DivX是为了打破Microsoft的ASF规格而开发的,现在开发组摇身一变成了Divxnetworks公司,所以不断推出新的版本,最大的特点就是在编码程序中加入了1-pass和2-pass的设置,2-pass相当于两次编码,以最大限度地在网络带宽与视觉效果中取得平衡。
posted @ 2009-01-19 13:04 小马歌 阅读(451) | 评论 (0)编辑 收藏
仅列出标题
共95页: First 上一页 73 74 75 76 77 78 79 80 81 下一页 Last