win2003服务器安全配置清单

Web服务器安全配置的内容

1终端服务默认端口号:3389。
更改原因:不想让非法用户连接到服务器进行登录实验。当这台服务器托管在外时更不希望发生这种情况,呵呵,还没忘记2000的输入法漏洞吧?
更改方法:
  (1)、第一处[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ Wds \ rdpwd \ Tds \ tcp],看到右边的PortNumber了吗?在十进制状态下改成你想要的端口号吧,比如7126之类的,只要不与其它冲突即可。
  (2)、第二处[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp,方法同上,记得改的端口号和上面改的一样就行了。

2系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe、telnet.exe、ftp.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限

注册表删除 WScript.Shell、WScript.Shell.1、Wscript.Network、Wscript.Network.1、Shell.application
注册表改名 adodb.stream、Scripting.Dictionary、Scripting.FileSystemObject

3启用防火墙和tcp/ip过滤,再serv-u开启一组端口映射
  80 \ 20 \ 21 \ 2121 \ * 以及serv-u端口组
  

4关闭默认共享
  
  在Windows 2000中,有一个“默认共享”,这是在安装服务器的时候,把系统安装分区自动进行共享,虽然对其访问还需要超级用户的密码,但这是潜在的安全隐患,从服务器的安全考虑,最好关闭这个“默认共享”,以保证系统安全。方法是:单击“开始/运行”,在运行窗口中输入“Regedit”,打开注册表编辑器,展开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters”项,添加键值AutoShareServer,类型为REG_DWORD,值为0。 这样就可以彻底关闭“默认共享”。

[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run]
"deletenetshare"="c:\\\\deletenetshare.bat"

5防范拒绝服务攻击
禁止响应ICMP重定向报文。此类报文有可能用以攻击,所以系统应该拒绝接受ICMP重定向报文。
"EnableICMPRedirects"=dword:00000000

6 iis部分的配置,mdb防止下载,添加数据库名的如MDB的扩展映射 iislog.dll

7 如何解除FSO上传程序小于200k限制?
 先在服务里关闭IIS admin service服务,找到Windows\System32\Inesrv目录下的Metabase.xml并打开,找到ASPMaxRequestEntityAllowed,将其修改为需要的值。默认为204800,即200K,把它修改为51200000(50M),然后重启IIS admin service服务。

Windows2003下的IIS权限设置
前提:仅针对windows 2003 server SP1 Internet(IIS) 服务器

系统安装在C:\盘

系统用户情况为:
administrators 超级管理员(组)
system 系统用户(内置安全主体)
guests 来宾帐号(组)
iusr_服务器名 匿名访问web用户
iwam_服务器名 启动iis进程用户
www_cnnsc_org 自己添加的用户、添加后删除Users(组)、删除后添加到guests来宾帐号(组)
为加强系统安全、(guest)用户及(iusr_服务器名)用户均被禁用
将访问web目录的全部账户设为guests组、去除其他的组

■盘符 安全访问权限
△C:\盘 administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
△D:\盘 (如果用户网站内容放置在这个分区中)、administrators(组) 完全控制权限
△E:\盘 administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
△f:\盘 administrators(组) 完全控制权限、system(内置安全主体) 完全控制权限
△如有其他盘符类推下去.

■禁止系统盘下的EXE文件:
net.exe、cmd.exe、tftp.exe、netstat.exe、regedit.exe、regedt32.exe、at.exe、attrib.exe、cacls.exe
△些文件都设置成 administrators 完全控制权限

■禁止下载Access数据库
△Internet 信息服务(IIS)管理器→网站→属性→主目录→配置→添加
△可执行文件:C:\WINDOWS\twain_32.dll
△扩展名:.mdb
▲如果你还想禁止下载其它的东东
△Internet 信息服务(IIS)管理器→网站→属性→主目录→配置→添加
△可执行文件:C:\WINDOWS\twain_32.dll
△扩展名:.(改成你要禁止的文件名)
▲然后删除扩展名:shtml stm shtm cdx idc cer

■防止列出用户组和系统进程:
△开始→程序→管理工具→服务
△找到 Workstation 停止它、禁用它

■卸载最不安全的组件:
△开始→运行→cmd→回车键
▲cmd里输入:
△regsvr32/u C:\WINDOWS\system32\wshom.ocx
△del C:\WINDOWS\system32\wshom.ocx
△regsvr32/u C:\WINDOWS\system32\shell32.dll
△del C:\WINDOWS\system32\shell32.dll
△也可以设置为禁止guests用户组访问

■解除FSO上传程序小于200k限制:
△在服务里关闭IIS admin service服务
△打开 C:\WINDOWS\system32\inetsrv\MetaBase.xml
△找到ASPMaxRequestEntityAllowed
△将其修改为需要的值、默认为204800、即200K、把它修改为51200000(50M)、然后重启
IIS admin service服务

■禁用IPC连接
△开始→运行→regedit
△找到如下组建(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa)中的
(restrictanonymous)子键
△将其值改为1即

■清空远程可访问的注册表路径:
△开始→运行→gpedit.msc
△依次展开“计算机配置→Windows 设置→安全设置→本地策略→安全选项”
△在右侧窗口中找到“网络访问:可远程访问的注册表路径”
△然后在打开的窗口中、将可远程访问的注册表路径和子路径内容全部设置为空即

■关闭不必要的服务
△开始→程序→管理工具→服务
△Telnet、TCP\IP NetBIOS Helper

■解决终端服务许可证过期的办法
△如果你服务器上已经开着终端服务、那就在添加删除程序里删除终端服务和终端授权
服务
△我的电脑--右键属性--远程---远程桌面、打勾、应用
△重启服务器、OK了、再也不会提示过期了

■取消关机原因提示
△开始→运行→gpedit.msc
△打开组策略编辑器、依次展开
△计算机配置→管理模板→系统
△双击右侧窗口出现的(显示“关闭事件跟踪程序”)
△将(未配置)改为(已禁用)即可
 
 
 

发表在 article | 标签为 | 32条评论

Install PHP to IIS (FastCGI)

Install PHP to IIS8.5

1、安装Visual C++ Redistributable for Visual Studio 2012 Update 4(x86)
2. 解压php-xxx-nts-x86 / x64-VC11.zip文件
3.打开C:\php
复制php.ini-production为php.ini
用记事本打开php.ini
做如下修改:
; to fastcgi
cgi.force_redirect=0
cgi.fix_pathinfo=1
fastcgi.impersonate=1
cgi.rfc2616_headers=1
;date.timezone = PRC
;date.timezone =Etc/GMT+8
date.timezone =Asia/Shanghai
short_open_tag = Off
expose_php = Off

upload_tmp_dir = D:\wwwtemp
max_file_uploads = 20
upload_max_filesize = 20M

以下php扩展模块,根据需要选择开启,取消前面的分号为开始相应扩展模块
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_sockets.dll
extension=php_xmlrpc.dll
extension=php_pdo_mysql.dll

4、配置IIS支持PHP (Fast CGI php)
(1) IIS-计算机名称
打开“处理程序映射”
“添加模块映射”
请求路径:*.php模块:FastCgiModule
可执行文件(可选):C:\php\php-cgi.exe
名称:FastCGI

(2)打开“FastCGI设置”,可选,根据实际需要配置 或 使用默认

测试 http://localhost:xxx/phpinfo

Install FastCGI to IIS6
1. download

http://www.iis.net/expand/FastCGI

下载之后,双击运行进行安装。

安装后在 C:\WINDOWS\system32\inetsrv 目录下产生了五个文件。

同时在 IIS 的 “Web 服务扩展”里多了 FastCGI Handler。

 

2. 下载PHP5.3.2 Windows
http://windows.php.net/download/

下载 .zip 格式的版本,下载后解压至 D:\PHP 目录,并给 IIS 启动帐户组或用户赋予读取和运行权限。

你可以根据自己的意愿解压到别的目录。

 

3. 注册PHP FastCGI

打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。

; This is the configuration file for the FastCGI handler for IIS 6.0.
; The FastCGI handler will look for this file in the same directory as
; fcgiext.dll. By default, the FastCGI installer will place this file into
; the %windir%\system32\inetsrv directory.

我个人的理解是,只要”Web 服务扩展”里的 FastCGI Handler 为允许时,在加载 fcgiext.dll 时,会读取 fcgiext.ini 配置文件的内容,根据里面的配置为每个网站提供映射。

在 [Types] 下添加以下配置:

[Types]
php=PHP

[PHP]
ExePath=D:\PHP\php-cgi.exe

“php”表示扩展名,”PHP”是配置节名称,以”[PHP]“定义。

 

4. 配置php.ini

将 D:\PHP\php.ini-recommended 复制一个,然后重命名为 D:\PHP\php.ini

打开 D:\PHP\php.ini,修改:

extension_dir = “D:\PHP\ext”
fastcgi.impersonate = 1

其它的根据实际需要对 php.ini 进行设置修改,这里只针对能跑 php,修改完记得重启 IIS。

5. 配置网站

右键网站 => 属性 => 主目录 => 配置 => 添加,

在可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll

然后文件扩展名写:PHP

6. 写个php 测试下吧

<?php
phpinfo();
?>

看到PHP的信息的话就说明你的服务器可以跑 php 了。

打开后如果出现提示:

No input file specified.

估计是没配置 fastcgi.impersonate。

如果你还觉得麻烦,那就到 http://www.zend.com 下载 Zend Core,这个就什么都不用配置,安装完就可以使用了,连 MySQL 都有。

微软去年底发布了II6的FastCGI模块,今天将服务器上的PHP支持改成了FastCGI,目前运行稳定.FastCGI的IIS模块可以让流行的应用框架在IIS上支持FastCGI协议以提供高性能和可用性的访问服务,FastCGI面向现有的网络服务器提供高性能的CGI替代标准。具体PHP安装方法我记录下来,其中包括出现的一个错误.

环境:
操作系统:Windows 2003 Server
PHP版本:PHP5.25

1.下载FastCGI For IIS6
http://www.microsoft.com/downloads/details.aspx?FamilyID=2d481579-9a7c-4632-b6e6-dee9097f9dc5&displaylang=en

下载之后,双击运行进行安装.

2.下载PHP5.25 Windows版
http://www.php.net

下载.zip格式的版本,下载后解压至D:\PHP目录,并给IIS启动帐户组或用户赋予读取和运行权限.

3.注册PHP到FastCGI
在命令行下运行
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"D:\PHP\php-cgi.exe"

fcgiconfig.js 默认存放目录是:C:\WINDOWS\system32\inetsrv

4.设置
将D:\PHP\php.ini-recommended重命名为为D:\PHP\php.ini
打开D:\PHP\php.ini,修改:
extension_dir = "D:\PHP\ext"
fastcgi.impersonate = 1
cgi.fix_pathinfo=1
cgi.force_redirect = 0

其它根据实际需要对php.ini进行设置修改
然后执行:
cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:500
cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:1000
以上两项设置最大池和响应连接数,可以根据运行机器的硬件配置、使用情况修改

一切完毕之后重启IIS,赶紧写一个测试页试一下吧.

我第一次安装时,由于为了服务器的安全我删除了wsshell命令,导致在第3步时出现了如下错误:
Microsoft JScript 运行时错误: Automation 服务器不能创建对象
后通过重新注册命令:regsvr32 WSHom.ocx
问题解决

 

配置 php.ini

D:\PHP\php.ini-production 复制一个,然后重命名为 D:\PHP\php.ini

打开 D:\PHP\php.ini
修改PHP.ini文件:
1
。第531行改为:display_errors = On
2
。第542行改为:display_startup_errors = On
3
。第624行改为:error_prepend_string = "<br><font color=#ff0000>"
4
。第630行改为:error_append_string = "</font><br><br>"
5
。第813行改为:extension_dir = "D:\php\php_setup_files\php-5.3-vc9\ext\"
6
。第854行改为:fastcgi.impersonate = 1
7
。从948行到988行根据自己的需要修改
8
。第997行改为:date.timezone = asia/Shanghai

其它的根据实际需要对 php.ini 进行设置修改,这里只针对能跑 php,修改完记得重启 IIS

 

重启IIS后,打开测试页出现如下提示:

FastCGI Error
The FastCGI Handler was unable to process the request.
--------------------------------------------------------------------------------

Error Details:

Error Number: 5 (0x80070005).
Error Description: 拒绝访问。
HTTP Error 500 - Server Error.
Internet Information Services (IIS)

这个错误是由于在解压PHP之后,没有对IIS启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.

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

错误信息:
1
Error Number: 14001 (0x800736b1).
没有安装Microsoft Visual C++ 2008 Redistributable Package

下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=zh-cn
2
Error Number: 5 (0x80070005).
Unable to place a FastCGI process in a JobObject. Try disable the Application Pool CPU Limit feature
取消CPU的监视

3。No input file specified.

估计是没配置 fastcgi.impersonate

 

发表在 web server | 标签为 , | Install PHP to IIS (FastCGI)已关闭评论

php中的与当前文件名有关一些常量

__FILE__ ,
getcwd(),
$_SERVER["REQUEST_URI"],
$_SERVER["SCRIPT_NAME"],
$_SERVER["PHP_SELF"],
$_SERVER["SCRIPT_FILENAME"],
来观察一下这些变量或函数的异同.
假设有一个请求地址为:
http://localhost:8080/test.php/age=20
而test.php 的完整路径是: D:/server/www/example/test.php
1) getcwd()
将得到浏览器请求的页面文件所在的目录. 即test.php 文件所在的目录: D:/server/www/example/ ,
如果在test.php 执行了 require 或 include 语句, 比如 inculde(”test_dir/test2.php”),
那么在 test2.php 里 getcwd()函数 返回的也将是 test.php 所在的目录.
2) __FILE__
一个魔术变量, 用它将得到 __FILE__ 变量所在文件的完整路径,
比如: test.php 里 __FILE__ 将得到 D:/server/www/example/test.php ,
test_dir/test2.php 里的 __FILE__ 将得到 D:/server/www/example/test_dir/test2.php
3) $_SERVER["SCRIPT_FILENAME"]
将得到浏览器请求的页面文件的完整路径.
test.php 和 test_dir/test2.php 里用 $_SERVER["SCRIPT_NAME"] 都将得到 D:/server/www/example/test.php.
4) $_SERVER["SCRIPT_NAME"]
将得到浏览器请求的页面文件的文件名,注意: 与 $_SERVER["SCRIPT_NAME"] 不同, 此变量只得到文件名而不包含路径,
在test.php 与 test_dir/test2.php 用$_SERVER["SCRIPT_NAME"] 得到的都将是 test.php.
当然, 在test.php 与 test_dir/test2.php 执行 basename($_SERVER["SCRIPT_FILENAME"]) 与 $_SERVER["SCRIPT_NAME"] 相同.
执行 在test.php 与 test_dir/test2.php 执行 realpath(”test.php”) 得到的结果与 $_SERVER["SCRIPT_FILENAME"] 相同.
5) $_SERVER["PHP_SELF"]
将得到浏览器请求页面的文件名, 并剥掉问号 ? 后的内容, 注意:不包含路径,
比如在客户端里请求
http://localhost:8080/test.php?age=20&name=Tom
,
那么test.php 和 test_dir/test2.php 的 $_SERVER["PHP_SELF"] 都将得到 “test.php”。“age=20&name=Tom”被剥掉。
而如果客户端里请求
http://localhost:8080/test.php/age=20&name=Tom
,
那么test.php 和 test_dir/test2.php 的 $_SERVER["PHP_SELF"] 都将得到 “test.php/age=20&name=Tom”。
6) $_SERVER["REQUEST_URI"]
将得到浏览器请求页面的文件名, 以及文件名之后的所有内容(注意: 井号 # 之后的内容将被略去),
比如在客户端里请求
http://localhost:8080/test.php?age=20&name=Tom
,
那么test.php 和 test_dir/test2.php 的 $_SERVER["REUEST_URI"] 都将得到 “test.php”。“age=20&name=Tom”被剥掉。
而如果客户端里请求
http://localhost:8080/test.php/age=20&name=Tom
,
那么test.php 和 test_dir/test2.php 的 $_SERVER["REQUEST_URI"] 都将得到 “test.php/age=20&name=Tom”。
*/
// test.php:
echo “test1.php variables
”;
echo “getcwd: “, getcwd(), “
”;
echo “__FILE__: “, __FILE__, “
”;
echo “REQUEST_URI: “, $_SERVER["REQUEST_URI"], “
”;
echo “SCRIPT_NAME: “, $_SERVER["SCRIPT_NAME"], “
”;
echo “PHP_SELF: “, $_SERVER["PHP_SELF"], “
”;
echo “SCRIPT_FILENAME “, $_SERVER["SCRIPT_FILENAME"] , “
”;
// 把 test2.php 包含进来, 在 test2.php 里输出上面的变量,看有什么不同:
include_once(”test2/test2.php”);

发表在 article | 标签为 | php中的与当前文件名有关一些常量已关闭评论

windows server2003 各版本区别

比较 Windows Server 2003 的版本

使用这组表比较 Windows Server 2003 系列的特性,这组表按功能组织。

特性

图例: Feature included or supported = 支持全部功能 Feature partially supported = 支持部分功能 Feature not included = 不支持该功能

特性 标准版 企业版 数据中心版 Web 版
硬件规格
64位支持1 Feature not included Feature included Feature included Feature not included
热插拔内存2, 3 Feature not included Feature included Feature included Feature not included
非均一内存访问 (NUMA)3 Feature not included Feature included Feature included Feature not included
数据中心计划 Feature not included Feature not included Feature included Feature not included
2 GB最大内存 Feature not included Feature not included Feature not included Feature included
4 GB最大内存 Feature included Feature not included Feature not included Feature not included
32 GB最大内存4 Feature not included Feature included Feature not included Feature not included
64 GB最大内存5 Feature not included Feature partially supported Feature included Feature not included
1 TB最大内存6 Feature not included Feature not included Feature partially supported Feature not included
2-路 SMP Feature included Feature included Feature not included Feature included
4-路 SMP Feature included Feature included Feature not included Feature not included
8-路 SMP Feature not included Feature included Feature included Feature not included
32-路 SMP Feature not included Feature not included Feature included Feature not included
64-路 SMP Feature not included Feature not included Feature included Feature not included
目录服务
Active Directory Feature included Feature included Feature included Feature partially supported
Microsoft Identity Integration Server 2003 (MIIS) Feature not included Feature included Feature included Feature not included
安全服务
Internet 连接防火墙2 Feature included Feature included Feature not included Feature included
公钥结构,证书服务与智能卡 Feature partially supported Feature included Feature included Feature partially supported
终端服务
远程管理桌面 Feature included Feature included Feature included Feature included
终端服务器 Feature included Feature included Feature included Feature not included
终端服务器会话目录 Feature not included Feature included Feature included Feature not included
互操作工具
UNIX 服务 Feature included Feature included Feature included Feature not included
集群技术
网络负载平衡 Feature included Feature included Feature included Feature included
群集服务 Feature not included Feature included Feature included Feature not included
通讯与网络服务
虚拟专用网络 (VPN) 支持 Feature included Feature included Feature included Feature partially supported
Internet身份验证服务 (IAS) Feature included Feature included Feature included Feature not included
网桥 Feature included Feature included Feature included Feature not included
Internet 连接共享 (ICS) Feature included Feature included Feature not included Feature not included
IPv6 Feature included Feature included Feature included Feature included
文件与打印服务
分布式文件系统 (DFS) Feature included Feature included Feature included Feature included
加密文件系统 (EFS) Feature included Feature included Feature included Feature included
卷影副本恢复 Feature included Feature included Feature included Feature included
卷影副本传输 Feature not included Feature included Feature included Feature not included
可移动存储 Feature included Feature included Feature included Feature included
远程存储 Feature not included Feature included Feature included Feature not included
传真服务 Feature included Feature included Feature included Feature not included
Macintosh 服务 Feature included Feature included Feature included Feature not included
UNIX 服务 Feature included Feature included Feature included Feature not included
虚拟磁盘服务 (VDS) Feature included Feature included Feature included Feature included
卷影副本服务 (VSS) Feature included Feature included Feature included Feature included
管理服务
IntelliMirror Feature included Feature included Feature included Feature partially supported
组策略结果 Feature included Feature included Feature included Feature partially supported
Windows 管理规范 (WMI) 命令行 Feature included Feature included Feature included Feature included
远程操作系统安装 Feature included Feature included Feature included Feature included
远程安装服务 (RIS) Feature included Feature included Feature included Feature not included
Windows系统资源管理器 (WSRM) Feature included Feature included Feature included Feature not included
.NET 应用服务
.NET Framework2 Feature included Feature included Feature included Feature included
Internet 信息服务 (IIS) 6.0 Feature included Feature included Feature included Feature included
ASP.NET2 Feature included Feature included Feature included Feature included
企业级 UDDI 服务 Feature included Feature included Feature included Feature not included
多媒体服务
Windows Media™ 服务2 Feature partially supported Feature included Feature included Feature not included

1 仅适用于 64 位版本。
2 不支持 Windows Server 2003 的 64 位版本。
3 可能会受到 OEM 厂商硬件限制。
4 企业版的 32 位版本和标准版的 x64 版本最高可支持 32 GB RAM。
5 数据中心版的 32 位版本支持 64 GB RAM。
6 数据中心版的 64 位版本和企业版的 64 位版本都支持 1 TB RAM。


发表在 article | 标签为 | 71条评论

最全的ASP.NET开源CMS汇总 转

编辑点评:汇总了一些asp.net开源cms,希望对学习ASP.NET的人员带来帮助.

  国内: 1.SiteServer CMS SiteServer CMS 网站内容管理系统(著作权登记号2008SR15710)是定位于中高端市场的CMS内容管理系统,能最近汇总了一些asp.net开源cms,希望对学习ASP.NET的人员带来帮助:

  国内CMS:

  1.SiteServer CMS

  SiteServer CMS 网站内容管理系统(著作权登记号2008SR15710)是定位于中高端市场的CMS内容管理系统,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大的网站平台。

  SiteServer CMS 是基于微软.NET 平台开发的网站内容管理系统,它集成了内容发布管理、多站点管理、定时内容采集
、定时生成、多服务器发布、搜索引擎优化、流量统计等多项强大功能,独创的 STL 模板语言,通过Dreamweaver 可视化插件能够任意编辑页面显示样式,生成纯静态页面。

  经历了七年的发展、众多项目的应用以及市场的检验,SiteServer CMS 不断吸收来自各方面的发展建议和成功经验,
其功能不断完善和发展,系统目前已经具有成熟稳定、运行速度快等特点,适合门户、政府、学校、企业以及其他各种资讯
类网站使用。

  下载地址:http://www.siteserver.cn/

  2.NetCMS
      NetCMS是基于ASP.NET2.0开发的网站内容管理系统,程序完全开源,没有任何文件加密, 不需要注册任何组件,完全开
源方便您二次开发。

    全新“网站模板与网站程序完全分离”的概念,具有强大的标签加样式的个性化组合,自定义标签、自定义表单、JS管
理加JS模型(自定义JS,系统JS)的灵活应用,支持不同频道、栏目、内容页、专题等应用不同的模板,随时能编辑、修改
和更换网站界面,系统集成类同Macromedia Dreamweaver一样简单的可视模板编辑方式,可批量设置属性,模板标签全面支持目前最受欢迎的DIV+CSS格式,支持批量绑定模板,完全做到轻松换肤。

  下载地址:http://www.aspxcms.com/

  3.ROYCMS

  ROYcms!NT内容管理系统是国内CMS市场的新秀、也是国内少有的采用微软的ASP.NET 2.0 + SQL2000/2005 技术框架开发的CMS,充分利用  ASP.NET架构的优势,突破传统ASP类CMS的局限性, 采用更稳定执行速度更高效的面向对象语言C#设计,沿续PETshop的代码框架,全新的模板引擎机制, 全新的静态生成方案,这些功能和技术上的革新塑造了一个基础结构稳定功能创新和执行高效的CMS。 

  功能特色:
  模板自由组合定制
  静态生成HTML
  资源无限级分类
  插件形式易于扩展
  命名规范适合二次开发 

  下载地址:http://www.roycms.cn/index.html

  4.网奇-Iwms系统

  网奇Iwms网站管理系统是由国内知名ASP.NET工程师木鸟开发的一套安全易用的网站管理系统,本系统采用ASP.NET内核制作, 本系统最大的特点是;后台管理功能强大,网站运行速度快,支持静态输出,网站安全性极高,对搜索引擎的支持性好,24小
时自动循环新闻采集,网站界面可任意定制各类精美页面!
  网奇iwms官网:http://iwms.wangqi.com/

  5.思想内容管理系统--SXCMS

  主要功能如下:
  支持会员、非会员在线投稿
  支持文章生成静态页,可自定义文章链接地址,支持URL跳转功能
  支持无限量添加文章、无限级分配栏目
  支持分栏目设置不同模板、不同参数、不同阅读权限
  支持定义栏目名称、栏目路径规则
  支持栏目URL跳转
  支持自定义某栏目生成内容页面扩展名
  支持分栏目设置keyword和description
  内置三种图片图片调用方式,可灵活调配前台显示页面
  支持动态调用文章点击数、评论数及其它各项参数
  评论采用Ajax页面无刷新技术
  支持专题功能
  支持前台模糊搜索功能
  支持文章分栏目分对象进行采集、采集后自动发布
  支持计划任务,自定义时间、周期进行更新、采集任务,支持自定义计划任务
  支持RSS信息订阅   
  内置网页防篡改功能
  支持动态或静态页面输出

  下载地址:http://www.sxcms.com/

  6.将博CMS--JUMBOTCMS

  是一套个人独立开发的内容管理系统,其前身为jbsitecms采用WEB2.0设计理念、无刷新更新页面,前台模板自定义
.NET 版本:VS2005+MSSQL2000
  1、基本模块还是文章、图片和下载(增加了视频模块)。
  2、将评论、公告、统计、友情链接、顶客等作为扩展插件,可灵活启用或关闭。
  3、增加了用户留言模块(插件形式)。
  4、部分标签发生了变化。
  5、其他小功能的更新很多,这里不一一陈述。 以上是功能上的更新,在技术上比较 v2008以 WebControls为主,而v2009融入了更多的前台技术……

  下载地址:http://jumbotcms.net/

  7. DotNetNuke(ASP.NET 2.0)
  DotNetNuke是一个Web应用框架的理想,为创建和部署的项目,如商业网站,企业内联网和外联网,在网上出版门户,并定制垂直应用软件。方便用户-DotNetNuke旨在使用户可以更轻松地管理所有方面的项目。

  下载网址:http://www.dotnetnuke.com/

  8.内容管理系统 DianCMS

  内容管理系统SQL版(DianCMS.SQL)是基于微软ASP.NET2.0、AJAX1. 0技术、采用MS SQL2000/2005存储过程进行多层架构开发的内容管理管理。其功能设计主要面向中大型企业、各个行业、事业单位以及政府机关等复杂功能站点。系统已建立文章系统、图片系统、下载系统、个人求职、企业招聘、房产系统、音乐系统、网上商店。使用自定义模型、自定义字段、自定义表单、自定义录入界面、会员系统等功能,您还可以轻松、灵活的建立适合自身需求的任何系统功能,最大化满足每个用户任何时候的不同需求。更多功能详见官方网站.

  9.Zoomla!逐浪CMS

  Zoomla!逐浪CMS是功能强大的网站内核与管理系统,集成内容管理\OA\SNS\项目管理\采集\邮件订阅等强大功能,基于c#语言.net架构开发,是目前中国唯一同步支持MSSQL与Oracle两大数据库的高端CMS,用于快速构建高效门户网站,中国首家公开提供门户站群系统的高端CMS研发厂商。

  演示地址:http://demo.zoomla.cn/index.html

  下载地址:http://www.zoomla.cn/index.shtml

  10.网站快车.NET网站管理系统

  网站快车.NET  是集本公司八年CMS系统开发经验之大成,投入了巨大心血和精力开发的功能强大、运行速度快、安全可靠的新一代网站管理系统(CMS)。本系统采用MS SQL 和存储过程,系统运行速度快,安全性非常好,创新的可视化标签系统和数据模型功能,让你用本系统可以建立几乎所有类型的网站,开发任何风格的网站风格。系统不但拥有丰富的模板,同时还提供相当丰富的定制服务,我们可以为你定制您心目中理想的网站。
  快车系统高性能的网站管理系统,  经测试200万数据, 5千栏目的条件下,系统运转如飞, 速度和静态页相当.海量数据网站当
然要用快车系统.
  快车系统 是扩展性最好网站管理系统, 数据模型(挂接表)功能, 令网站可以无限扩展功能.

  快车系统 是最好用, 最酷的网站管理系统 系统采用WEB OS的后台, 和WINDOWS的操作方式相似, 令从未从事网站管理的人,轻易上手, 多窗口操作, 各种工作可同时进行,  国内尚无第二家使用此技术.

  快车系统 是模板设计最灵活的网站系统, 所有标签可视化设计, 无需导入模板, 修改标签参数后,直接刷新页面就可以看到
效果. 无需记忆标签参数含义.

  高质量、高服务,高质量的后台系统,还有高质量的服务,我们的系统一次购买,终身享有技术支持和免费升级,无需每年支付使用费。

  下载地址:http://www.zydn.net/

  11.风讯dotNETCMS

  dotNETCMSv1.0是一款具有强大的功能的基于ASP.NET+MSSQL构架的内容管理软件,国内领先的第一款开源的、集成web2.0元素的、模块化的CMS建站系统。 dotNETCMSv1.0版功能: SQL数据库+内容管理+频道管理+发布管理+会员中心+插件管理(广告系统+采集系统+问卷调查+友情链接+统计系统+整合接口+文件对比+自定义字段+自定义表单+数据库维护) 

  程序特点:
        1.全部生成静态页面/动态页面
        2.完全人性化的操作方式
        3.系统内置标签和自由标签管理,可以生成任何页面需要的任何元素和样式
        4.集成了新闻采集系统
        5.会员管理系统,并与流行论坛高度整合
        6.自由化的权限分配管理
        7.全个性化模板生成,模板由用户自由定义
        8.投稿,投票,广告管理
        9.面向高级技术人员的自由化SQL扩展标签
        10.自动生成图片水印
        11.后台操作自由灵活
        12.其他一些功能...
  下载地址:http://www.foosun.net/

  12.动易? SiteFactory

  动易SiteFactory是一套基于微软 .NET 平台、采用最新的 ASP.NET 2.0技术、基于 WEB 应用的 B/S 架构分层开发的内容管理系统,专门面向需要构建企业信息门户平台的大中型企业而开发;具有强大的资讯信息管理功能、图片展示功能、人才招聘管理功能*、在线客户服系统*、问答系统、问卷调查管理、广告管理、手机短信发送、信息采集、自定义表单管理等系列功能,并且内置了包括文章、图片、软件、商品、flash、视频、音乐等在内的可开箱即用的标准化内容模型,以力助各中大型企业以最经济的成本和最便捷的方式构建起无限强大的企业信息门户!其中,人才招聘管理功能可助企业便捷进行在线人才招聘和管理;在线客户服务系统可助企业构建起强大的在线客户服务中心,以给客户提供更为专业的售后服务;多用户博客系统可供企业开设企业博客进行博客营销;而问答系统可助企业搭建起开放式的客服中心或行业垂直型的专业问答平台。

  在SiteFactory3.0版本中,系统又特别新增了全文检索系统*、多用户博客系统*、会员注册推广、模板标签库升级工具等系列功能,为企业信息门户在用户体验、网站互动、营销推广等方面进行了更好的完善和改进。全文检索系统可对企业网站大量的各类资讯文章进行高速的检索,多用户博客系统可供企业开设企业博客进行博客营销,而模板标签库升级工具可让企业网站在升级时轻松沿用原来的网站模板。

  下载地址:http://www.powereasy.net/

  13.拓文网站内容管理系统

   同时支持Access数据库和MS Sqlserver数据库,同时支持静态页面和动态页面。

  文章采集、会员管理、广告管理、软件下载,新闻文章,留言本,调查投票,友情链接,在线文件管理,公告发布,数据库管理。界面友好、功能完善、简单易用、管理方便。它能帮助您建立高效率的独立站点。 

  下载地址:http://www.mytopwin.com/

  国外CMS: 1、Ludico Ludico是 C#编写的居于ASP.NET 2.0的Portal/CMS系统。它的模块化设计是你可以按照你希望的使用或开发网站功能。它里面有高级的用户管理,一

  国外CMS:
  1、Ludico 

  Ludico是C#编写的居于ASP.NET 2.0的Portal/CMS系统。它的模块化设计是你可以按照你希望的使用或开发网站功能。它里面有高级的用户管理,一个所见即所的(WYSIWYG)的编辑器等。

  下载地址:http://sourceforge.net/projects/ludico

  2、umbraco

  Umbraco是一款在.net平台下C#开发的开源内容管理系统,该系统效率,灵活,用户界面都不错。

  下载地址:http://umbraco.org/

  3、mojoPortal

  mojoPortal是一款C#开发的面相对象网站框架,它可以运行于Windows的ASP.NET 和GNU/Linux 或Mac OS X的Mono的平台上。

  下载地址:http://www.mojoportal.com/

  4、Kodai CMS

  Kodai CMS是.NET平台下的一款功能齐全的内容管理系统。

  下载地址:http://www.gotdotnet.com/workspaces/workspace.aspx?id=070f30c3-6089-4a75-b84c-fac654a7ec08

  5、nkCMS

  NkCMS是使用ASP.net和Sql server 2000开发的内容管理系统。

  下载地址:http://nkcms.sourceforge.net/

  6、Go.Kryo

  Go.Kryo是一个用ASP.NET(C#).NET 实现的简单的内容管理系统,后台数据库使用Microsoft SQL Server 。

  下载地址:http://sourceforge.net/projects/gokryo

  7、Amplefile

  Amplefile是一款内容管理系统,是.Net环境下的windows应用程序,使用了.Net remoting.

  下载地址:http://sourceforge.net/projects/amplefile

  8、ndCMS

  ndCMS是 ASP.net (C#)下的一个内容管理系统。它提供了用户管理,文件管理,一个WYSIWYG编辑器,模板管理,拼写检查和内置的http压缩。ndCMS的目标是提供一个简单而快速的方式部署.Net站点

  下载地址:http://ndcms-net.sourceforge.net/

  9、Cuyahoga

  Cuyahoga是C#开发的灵活的CMS / Portal 解决方案。它可以运行于Microsoft .NET 和Mono 平台,支持SQL Server, PostgreSQL或MySQL作为底层数据库。

  下载地址:http://www.cuyahoga-project.org/

  10、Rainbow

  Rainbow项目是一款使用Microsoft's ASP.NET和C#技术开发的有丰富功能的开源内容管理系统。

  http://community.rainbowportal.net

发表在 article | 最全的ASP.NET开源CMS汇总 转已关闭评论

nginx处理web请求分析

Nginx是什么?Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可。

笔者的VPS使用的是nginx服务器,以前配置都是从网上拷贝过来的,一直一知半解,正好手头有VPS可以玩,趁这个机会认真学习下nginx的配置.下面的文章是讲nginx如何处理web请求(web request)过程的。

一、基于域名的虚拟服务器

nginx首先确定使用哪一个server域来处理请求,下面的例子中有3个虚拟服务器监听*:80端口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name nginx.org www.nginx.org;
...
}
  
server {
listen 80;
server_name nginx.net www.nginx.net;
...
}
  
server {
listen 80;
server_name nginx.com www.nginx.com;
...
}

在上面的配置中,nignx根据HTTP请求“Host”的值,确定具体哪一个server接收web请求。如果“Host”不存在或者Host的值无法匹配任何sever中的$host_name,nginx就会把web请求送到默认的server中。如果没有定义default_server,默认将请求传递给第一个server。

1
2
3
4
5
server {
    listen       80  default_server;
    server_name  nginx.net  www.nginx.net;
    ...
}

参数“default_server” 是0.8.21后版本新增的内容. 此前的版本用“default”代替。
上面是针对web请求中包含“Host”值的情况,如果这个值不存在,那么可以使用下面的方法。

二、如何处理无server_name的请求?

1
2
3
4
5
6
server {
    listen       80  default_server;
    server_name  _;
    return       444;
   #所用"Host"为空的请求返回444响应。
}

三、处理基于IP和域名的虚拟主机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
    listen       192.168.1.1:80;
    server_name  nginx.org  www.nginx.org;
    ...
}
  
server {
    listen       192.168.1.1:80;
    server_name  nginx.net  www.nginx.net;
    ...
}
  
server {
    listen       192.168.1.2:80;
    server_name  nginx.com  www.nginx.com;
    ...
}

上面的配置中,nginx首先匹配IP地址和端口,然后在确定响应IP下的server_name,如果没有找到任何匹配的server_name,ngixn将请求传递给默认server。例如,当nginx收到来自 192.168.1.1:80 端口的请求www.nginx.com,
上例中没有定义默认server,那么这个请求将被传递到第一个server中。
nginx可以为不同的IP地址和端口定义多个默认server:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
    listen        192.168.1.1:80;
    server_name   nginx.org  www.nginx.org;
    ...
}
  
server {
    listen        192.168.1.1:80  default_server;
    server_name   nginx.net  www.nginx.net;
    ...
}
  
server {
    listen        192.168.1.2:80  default_server;
    server_name   nginx.com  www.nginx.com;
    ...
}

四、如何处理PHP请求

下面我们来看看nginx是如何确定web请求的location的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
    listen        80;
    server_name   nginx.org  www.nginx.org;
    root          /data/www;
  
    location / {
        index     index.html  index.php;
    }
  
    location ~* \.(gif|jpg|png)$ {
        expires   30d;
    }
  
    location ~ \.php$ {
        fastcgi_pass   localhost:9000;
        fastcgi_param  SCRIPT_FILENAME
                       $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

nginx会第一时间匹配定位符如”/”,如location / {…}。然后再依次包含匹配正则表达式的location,如果没有找到匹配的正则表达式,nginx会将请求重新定位到定位符”/”下。
个人理解:nginx会优先处理定位符"/"、"/images"这些location,其次才按顺序匹配包含正则的location。例如:"./logo.gif"的请求首先会匹配定位符"/",其次是通用表达式"\.(gif|jpg|png)$",因此它被第二个定位符所匹配.Nginx会使用指令"root /data/www"将请求映射到文件"/data/www/logo.gif",之后文件被返回给客户端。换言之,ngixn总是会把请求传递到最后一个匹配的location中。
需要注意到的是,ngixn处理的URI中不包含查询字符串(query string)部分,因为这些查询字符串的不确定因素太多,例如:

1
2
/index.php?user=john&page=1
/index.php?page=1&user=john

也可以这样写:

1
/index.php?page=1&something+else&user=john

最后看一下上面的例子中,nignx是如何处理的:

  1. “./logo.gif”的请求首先会匹配定位符”/”,其次是通用表达式”\.(gif|jpg|png)$”,因此它被第二个定位符所匹配.Nginx会使用指令”root /data/www”将请求映射到文件”/data/www/logo.gif”,之后文件被返回给客户端
  2. “/index.php”的请求也一样,首先匹配定位符”/”,其次是通常表达式”\.(php)$”.因而它由后者处理,请求被传递给在localhost:9000监听的FastCGI服务.”fastcgi_param”指令将FastCGI的参数SCRIPT_FILENAME设置为”/data/www/index.php”,再由FastCGI服务器执行该文件.变量$document_root的值与”root”指令的值是相等的,变量$fastcgi_script_name的值等于所请求的url,如”/index.php”等等
  3. 带”/about.html”的请求只匹配定位符”/”,因此它将在这个定位符中得到处理,由”root /data/www”指令将请求映射到”/data/www/about.html”,最后文件才被返回给客户端.
  4. 处理”/”这样的请求就更复杂了,因为只匹配”/”定位符所以只能在其中处理.”index”指令会根据它的参数及”root /data/www”指令,测试该目录下是否有默认文件存在.例如,如果存在”/data/www/index.php”文件,请求会被内部重定向到”/index.php”,然后Nginx会据此再进行一次定位符搜索,看起来就像是新接收到一个请求命令.一般而言,被重定向的请求最后会由FastCGI服务处理.
发表在 web server | 标签为 | nginx处理web请求分析已关闭评论

nginx设置SSL反向代理

Nginx的反向代理通常用来映射内网中提供的Apache、IIS、Lighttpd服务,以实现负载均衡;同时,由于动态服务程序运行在内网,服务器的整体安全性也有所提高,那么怎样用nginx设置SSL反向代理呢?

使用nginx设置SSL的优点不少:

  1. 易用性:nginx安装、升级简单,nginx的平滑升级使得网站服务器不需要重启就可以完成升级任务。
  2. 安全性:nginx对于代理是透明的,因此,相当于为放置在代理后的Apache等服务器提供一道安全屏障、可以抵御一些基本web的攻击。
  3. 低负载:负载低是nginx的另一大优点。可以在nginx代理后配置多个apache服务器以满足不同需求
  4. 缓存:可以将除动态文件以外的文件,如css、js、静态html页直接交给nginx处理,以进一步降低负载
  5. 文件压缩:nginx可以优化并减小文件传输尺寸,缩短文件读取时间。

说了一大堆优点,相信诸位看官该跃跃欲试了吧,闲话少提^_^,下面给出配置实例:

由于,下面的代码只是用来演示整个配置过程,因此,我使用的SSL安全证书是自己签名的,如果需要能够通过验证的SSL安全证书,请到CAs自我了断^_^(网站地址:www.verisign.com)。

一、生成SSL安全证书

在nginx的配置目录下新建一个文件夹用以存放证书

# cd /usr/local/nginx/conf
# mkdir ssl
# cd ssl

生成一个私有key

# openssl genrsa -des3 -out nixcraft.in.key 1024

点击查看原图

生成CSR(Certificate Signing Request)文件:

# openssl req -new -key nixcraft.in.key -out nixcraft.in.csr

点击查看原图

请输入自己的证书域名。上图红框的部分

二、配置SSL反向代理

编辑nginx的配置文件

#vi /usr/local/ngnix/conf/nginx.conf

添加如下代码:

server {
        ### server port and name ###
        listen          443 ssl;
        server_name     yourdomian.com;

        ### SSL log files ###
        access_log      logs/ssl-access.log;
        error_log       logs/ssl-error.log;

        ### SSL cert files ###
        ssl_certificate      ssl/yourdomain.com.crt;
        ssl_certificate_key  ssl/yourdomain.com.key;
        ### Add SSL specific settings here ###
        keepalive_timeout    60;

        ###  Limiting Ciphers ########################
        # Uncomment as per your setup
        #ssl_ciphers HIGH:!ADH;
        #ssl_perfer_server_ciphers on;
        #ssl_protocols SSLv3;
        ##############################################
        ### We want full access to SSL via backend ###
        location / {
                proxy_pass  http://yourdomain.com;
                ### force timeouts if one of backend is died ##
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

                ### Set headers ####
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                ### Most PHP, Python, Rails, Java App can use this header ###
                proxy_set_header X-Forwarded-Proto https;

                ### By default we don't want to redirect it ####
                proxy_redirect     off;
      }

保存、并重新加载配置文件

# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload

查看是否配置成功:

# netstat -tulpn | grep :443

SSL配置大功告成了,你可以使用https://youdomain.com访问你的网站了。

 

重定向端品丢失情况:

 

server {
        listen          80;
        server_name     yourdomain.com;


        location / {
                proxy_pass  http://yourdomain.com;
                ### force timeouts if one of backend is died ##
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

                ### Set headers ####
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                ### Most PHP, Python, Rails, Java App can use this header ###
                proxy_set_header X-Forwarded-Proto https;

                ### set server host
                proxy_set_header Host $host:$server_port;

                ### By default we don't want to redirect it ####
                proxy_redirect     off;
      }

Rewrite:

正则表达式匹配,其中:
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配,其中:
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
flag标记有:
* last 相当于Apache里的[L]标记,表示完成rewrite
* break 终止匹配, 不再匹配后面的规则
* redirect 返回302临时重定向 地址栏会显示跳转后的地址
* permanent 返回301永久重定向 地址栏会显示跳转后的地址
一些可用的全局变量有,可以用做条件判断
$args, 请求中的参数;
$content_length, HTTP请求信息里的"Content-Length";
$content_type, 请求信息里的"Content-Type";
$document_root, 针对当前请求的根路径设置值;
$document_uri, 与$uri相同;
$host, 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;
$limit_rate, 对连接速率的限制;
$request_method, 请求的方法,比如"GET"、"POST"等;
$remote_addr, 客户端地址;
$remote_port, 客户端端口号;
$remote_user, 客户端用户名,认证用;
$request_filename, 当前请求的文件路径名
$request_body_file
$request_uri, 请求的URI,带查询字符串;
$query_string, 与$args相同;
$scheme, 所用的协议,比如http或者是https,比如rewrite  ^(.+)$  $scheme://example.com$1  redirect;
$server_protocol, 请求的协议版本,"HTTP/1.0"或"HTTP/1.1";
$server_addr, 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费);
$server_name, 请求到达的服务器名;
$server_port, 请求到达的服务器端口号;
$uri, 请求的URI,可能和最初的值有不同,比如经过重定向之类的。

语法:rewrite regex replacement flag

按照相关的正则表达式与字符串修改URI,指令按照在配置文件中出现的顺序执行。
可以在重写指令后面添加标记。
如果替换的字符串以http://开头,请求将被重定向,并且不再执行多余的rewrite指令。
尾部的标记(flag)可以是以下的值:

  • last - 完成重写指令,之后搜索相应的URI或location。
  • break - 完成重写指令。
  • redirect - 返回302临时重定向,如果替换字段用http://开头则被使用。
  • permanent - 返回301永久重定向。

...

 

 

 

发表在 web server | 标签为 , , | nginx设置SSL反向代理已关闭评论

kb968389 引起局域网无法共享

windows kb968389 补丁可能会引起局域网无法共享

发表在 article | kb968389 引起局域网无法共享已关闭评论

兼容性好,自动置顶的淘宝悬浮工具栏,DIV绝对置顶(兼容IE,FF)

对于IE7,我们可以利用DIV的"position: fixed;"属性。代码如下:

#ie7_ff{
       position: fixed;
       top: 0px;
       left: 0px;
       width: 120px;
}

这段代码对于Firefox浏览器同样适用。但是IE6不支持“position: fixed;”属性。所以针对IE6我们可以用如下代码:

#ie6_ie7{
       position: absolute;
       width: 120px;
       left: 140px;
       top: expression(eval(document.documentElement.scrollTop));
}

这段代码对于IE7同样适用。但是FF不支持。

利用浏览器HACK技巧,我们就可以写出兼容IE6,IE7,FF的CSS代码:

#all_f1{
       width: 150px;
       position: fixed;       //IE7,FF
       _position: absolute;        //IE6
       left: 280px;
       top: 0px;
       _top: expression(eval(document.documentElement.scrollTop));    //IE6
#all_f2{
       width: 150px;
       position: fixed;       //FF
       *position: absolute;        //IE6,IE7
       left: 450px;
       top: 0px;
       *top: expression(eval(document.documentElement.scrollTop));   // IE6,IE7
 

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="http://www.w3.org/1999/xhtml
">
<head>
<title>兼容IE6的淘宝悬浮工具栏</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#float{width:744px;height:34px;border:1px solid #C0DBF8;position:absolute;top:0}
#box{position:relative;height:600px;}
</style>
</head>
<body>
<div style="height:300px;background:#eee"></div>
<div id="box"><div id="float" >ddd</div></div>
<div style="height:1000px;background:#eee"></div>
</body>
<script type="text/javascript">
var IO=document.getElementById('float'),Y=IO,H=0,IE6;
IE6=window.ActiveXObject&&!window.XMLHttpRequest;
while(Y){H+=Y.offsetTop;Y=Y.offsetParent};
if(IE6)
    IO.style.cssText="position:absolute;top:expression(this.fix?(document"+
        ".documentElement.scrollTop-(this.javascript||"+H+")):0)";
window.onscroll=function (){
    var d=document,s=Math.max(d.documentElement.scrollTop,document.body.scrollTop);
    if(s>H&&IO.fix||s<=H&&!IO.fix)return;
    if(!IE6)IO.style.position=IO.fix?"":"fixed";       
    IO.fix=!IO.fix;
};
try{document.execCommand("BackgroundImageCache",false,true)}catch(e){};
//]]>
</script>
</html> 

发表在 article | 兼容性好,自动置顶的淘宝悬浮工具栏,DIV绝对置顶(兼容IE,FF)已关闭评论

SQL里面随机选择数据行

SELECT TOP 10 OrderID, NewID() as Random
FROM Orders
ORDER BY Random  

关键在于NewID()这个函数,他生成一个随机数。

随机提取10条记录的例子:
SQL Server:

Select Top 10 * From 表 Order By NewID()

Access:

Select Top 10 * From 表 Order By Rnd(ID)  

 Random rnd = new Random(unchecked((int)DateTime.Now.Ticks));
 int intRandomNumber = rnd.Next();
Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(UserName)
Select Top 10 * From 表 Order BY Rnd(Len(UserName))

MySql:

Select * From 表 Order By Rand() Limit 10

SQL语句真是博大精深阿~

发表在 article | 标签为 , , | SQL里面随机选择数据行已关闭评论

JW FLV Player

一、JW Player是什么?

简单地说,JW Player是一种基于flash的交互式网页媒体播放器。它是由Jeroen 和 Wijering共同建立的LongTail Video所开发,问世于2005年,当时仍名不经传的YouTube首次采用的播放器就是JW Player。官方网址:http://www.longtailvideo.com/

JW Player含:FLV Player、WMV Player、Image Rotator和Desktop Player四种,除了最后一种实为桌面播放器,其他三种都是网页播放器。本篇内容仅限FLV Player。

二、JW FLV Media Player简介

JW FLV Media Player可播放Adobe Flash Player所支持的媒体,具体包括:FLV、MP4、MP3、AAC、JPG、PNG和GIF等,还支持RTMP、HTTP、实时视频流、各种播放清单格式、灵活的设置和广泛的javascript API。此外它还提供多种外观、功能性插件来扩展播放器,以便我们可以分享、推荐、搜索、分析甚至广告投放。

目前(2009-10-20)最新的版本是4.6版。

三、安装

JW Player可安装在网络空间,我从未如此运用过,而是上传到我的网盘,因此本篇的介绍也是基于此种情况,而列为看官当然懂得如何触类旁通。另外,我们一定要选择可以直链的网盘上传,何谓“直链”,即外链地址以完整的文件名为结尾(含.后缀名),如http://www.xxx.com/xxx.mp3

1、首先到官网下载源文件,下载地址:http://www.longtailvideo.com/players/jw-flv-player/


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

下载来的文件是zip压缩包,解压之后可以看到内含以下文件:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

2、将player.swf和swfobject.js这两个文件上传到网盘(建议在网盘上为它们单独建立一个文件夹,本篇示例文件夹JW Player),安装即告完毕,就这么简单!

四、使用设置向导

官网特别提供一个设置页面http://www.longtailvideo.com/support/jw-player-setup-wizard
,可以在网页上提交、设置播放器参数,生成嵌入代码,把生成的代码稍作修正后粘贴到博客或空间即可。

设置向导提供两种代码:默认的Swfobject 1.5 Code(即JavaScripting)和Embed Code。我没有机会运用Swfobject 1.5 Code,因此本篇只介绍Embed Code。



前面我提到过生成的代码要稍作修正:为了方便在网页小窗口浏览生成的代码,官网给出的代码是按各项参数分行了的,如果复制后就直接粘贴,可能会使播放器不能正常工作,我建议先把代码复制到“记事本”后,删除段落标记,注意每项参数之间还要保留一个空格位,再复制到空间或博客。

Embed 代码的格式一般是这样:
<embed
参数
1=”
参数值

参数
2=”
参数值

……
参数
n=”
参数值
”></embed>。

关于Embed Code各项参数的详细介绍,请参阅Adobe官网:http://kb2.adobe.com/cps/127/tn_12701.html
。这个话题不小,值得另开一篇介绍文章。

1、设置向导概览

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

(点击打开大图)

JW Player设置非常灵活,代价就是参数非常多,搞清楚参数的意义很重要,官网也提供相关资料供我们查阅:http://developer.longtailvideo.com/trac

特别注意:
如果你的网址参数值带有“?”、“=”和“&”这三个字符,必须先转换再填写,如下:


?
”转换为“
%3F



=

转换为“
%3D



&

转换为“
%26

例如:原网址为:
getplaylist.php?
id=
123&
type=
flv

,转换后为:
getplaylist.php%3F
id%3D
123%26
type%3D
flv

2、选择模板

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

官网为我们提供了多达21种模板,每选择一种模板,下面的参数值和播放器预览将自动更新。虽然大部分模板今后我们恐怕几乎用不上,我还是建议新手一定要把每一种模板都点击一下,再好好体会下面的参数值,这既有助于我们领会众多参数所代表的含义,还可以在播放器预览直接看到参数所体现的效果。

模板其实就是一件半成品,熟悉模板还可以让我们快速而准确地挑选最接近成品的模板,善用模板将大大提高效率。

需要多费口舌的是带播放清单模板“flvplayer with an rss playlist”,这个留待后面谈flie参数时再详细介绍。

3、嵌入参数

嵌入参数有三个内容:

*swf来源:填写我们之前上传到网盘player.swf的直链地址
*播放器高度:填写pix(像素)值或浏览窗口百分比
*播放器宽度:填写pix(像素)值或浏览窗口百分比


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

如果高度和宽度填写的是百分比,那么播放器的大小是弹性的,它将随浏览器窗口和所在网页留给播放器窗口的大小而变化。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

4、媒体文件属性参数

*媒体作者:填写媒体作者名字
*媒体描述:媒体的文字描述
*字幕:XML字幕文件的链接地址(XML字幕文件也是一个大话题,将另文介绍)
*持续时间:媒体播放的持续时间(秒)
*媒体文件:媒体文件或XML播放清单的链接地址

关于JW Player可支持的媒体格式详情,请参阅:http://developer.longtailvideo.com/trac/wiki/FlashFormats
。大致分类:单文件媒体(视频:FLV、MP4和AAC音频;音频;MP3;图像:JPG、GIF和PNG),YouTube视频,Livestream.com视频,HTTP流媒体,RTMP流媒体,XML播放清单。

我们要面对的模板其实可以归于两大类:一是播放单文件媒体;二是播放多文件媒体。单文件媒体好办,直接在参数file告诉播放器媒体文件的所在地址既可。如果要播放多文件媒体,那就要把所有媒体文件按顺序组织起来,并保存为XML文件(可以用“记事本”打开和编辑) ,这就是XML播放清单,而file参数就填上这个XML文件的链接地址。JW Player支持的播放清单格式有:XSPF、RSS(itunes、media)、ASX、ATOM。

关于XML播放清单见我的另一篇介绍文章《JW Player之XML播放清单简介》

请注意,
JW Player是以文件后缀名来判断媒体类别,如果播放器没有找到合适的后缀名,它将假定载入的是播放清单。

*预览图像:预览图片的链接地址

何谓“预览图像”?当播放器停止播放时,它显示的图像。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

外部链接地址:当填写此项参数值后,播放器的控制面板将多出一个链接按钮,点击可以打开外部链接网页。请看截图:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*开始时间:定位从第几秒开始播发,仅对HTTP / RTMP流媒体有效。
*媒体标题:如果你将播放器设置成带播放清单(Playlist),媒体标题将出现在播放清单。


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*媒体类别:一般来说JW Player可以根据媒体文件后缀名自动判断媒体类别,如果没有后缀名,或者媒体来自流媒体服务器,你可以手动设置媒体类别。可选择的参数如下:

video: FLV / MP4视频,也适用于 AAC 音频
sound: MP3
image: JPG/GIF/PNG 图像
youtube: 来自YouTube的视频
http: 来自HTTP服务器的FLV/MP4 流媒体
rtmp: 来自RTMP服务器的FLV/MP4/MP3流媒体

5、播放器颜色参数

* backcolor:控制面板和播放清单的背景颜色(默认为白色)
* frontcolor:控制面板和播放清单所有图标和文字颜色
* lightcolor:鼠标悬停于播放清单时,图标和文字显示颜色
* screencolor:播放屏幕的背景颜色

以上颜色参数应填写16进制网页颜色值,关于16进制网页颜色,请参阅:

http://en.wikipedia.org/wiki/Web_colours

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

6、播放器布局参数

*controlbar:控制面板放置位置:底部bottomd(默认)、覆盖over、无none。如果选择覆盖,只有鼠标悬停于播放屏幕,或者停止播放时,才会出现控制面板,此时控制面板出现于播放屏幕的底部。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*logo:填写logo图片(JPG/PNG/GIF)的直链地址。当采用默认皮肤时,Logo图像会显示于屏幕的右上角。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*playlist:播放清单放置位置:无none(默认)、底部bottom、覆盖over、右边right、左边left、顶部top。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*playlistsize:填写播放清单显示尺寸,默认180pix。当播放清单置于底部或顶部时,该值代表高度;当播放清单置于左边或右边时,该值代表宽度;当播放清单置于覆盖时,播放清单将在停止播放时才出现,并覆盖全部播放屏幕,且不受该值影响。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*dock:默认不显示dock。这个我确实不知道如何翻译,用过苹果操作系统的朋友应该知道那是什么。JW Player 4.5版以后支持dock。dock实际上就是某些插件(plugins)以图标的形式显示于屏幕的右侧,从上往下排列,具体哪些插件(例如:语音解说audiodescription,字幕caption等插件)支持dock,我尚不清楚。请看截图吧:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*skin:填写皮肤swf文件的直链地址。JW Player的皮肤插件也是swf文件,官网提供不少现成的皮肤插件,详见:http://www.longtailvideo.com/addons/skins
。在你运用皮肤插件之前,要先将你需要的皮肤插件下载到本地再上传到网盘。用户还可以自己设计自己的皮肤插件,参见:http://developer.longtailvideo.com/trac/wiki/FlashSkinning
http://developer.longtailvideo.com/trac/wiki/SkinningThePlayer


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

请你们特别注意
,不同的皮肤,其播放清单显示的具体内容会有所增减。

7、播放器行为参数

*autostart:自动播放,默认无false。
*bufferlength:缓冲时长(秒),默认1秒。设置开始播放前预先缓冲的时长,设置时长短可以及时播放,设置时长长则可以减少中断。
*displayclick:点击动作,默认为播放play。设置点击屏幕时播放器的行为:播放(默认)play,链接link,切换到全屏fullscreen,无任何行为none,静音mute,下一个曲目next。当选择“无任何行为none”时,鼠标点击手势不会出现于屏幕。


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*icons:缓冲图标,默认显示true。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*item:开始播放曲目,默认为0。注意:JW Player认为播放清单第一个曲目的顺序号为“0”。

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*mute:以静音开始,默认无false。该选择将会保存在浏览器的cookie。
*quality:回放品质,默认高品质true。
*repeat:重复方式,默认无none。list:播放清单的所有曲目都完整播放一遍。always:重复循环播放。
*shuffle:乱序播放,默认无false。设置是否按播放清单的顺序播放,或者乱序播放。
*stretching:图片延展方式。none:不延展;exactfit:不锁定高宽比填满屏幕;fill:锁定高宽比填满屏幕;默认uniform:锁定高宽比,以黑色填充空白部分。


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*volume:音量值,默认90。参数可以填写0-100之间的整数值,并将存放在浏览器的cookie。

8、外部通讯参数

*linktarget:链接目标。当我们在“媒体文件属性 — 外部链接地址”参数里填写了外部链接地址之后,这个参数就用于设置外部链接打开的方式:默认“_blank”,即在新窗口打开链接,或者“_self”,即在原窗口打开链接。

*plugins:插件,插件是播放器的扩展,使播放器具有更多的外观和功能,官方提供的插件详见:http://www.longtailvideo.com/AddOns/
。官方把所有插件分为三类:皮肤skin、插件plugins和组件modules。皮肤插件我之前已有介绍,它们实际上是swf文件,使用前要先上传到网络空间或网盘,运用皮肤插件也不在此设置,而是在皮肤“skin”参数中设置。组件modules本篇亦不打算涉及。那么以我的理解,在此的plugins应该是功能性的插件。

需要注意的是某些plugins是需要付费购买的,比如广告plugins “Adtonomy Text Ads (Run Your Own Ads)”:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

如果是免费plugins,一般会给出参数值,直接填写就可以加载了。以字幕plugins “captions”为例:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

要加载多个plugins,请在参数值之间用英文的逗号“,”隔开,如图:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

*streamer:rtmp/http流媒体,填写rtmp/http流媒体服务器地址,可以是RTMP应用程序,也可以是外部PHP/ASP文件,详见:http://developer.longtailvideo.com/trac/wiki/FlashFormats

9、预览你的播放器

当需要填写的参数都填写完之后,请点击“更新预览和代码(Update Preview & Code)”,其下的“预览你的播放器(Preview Your Player)”和“复制你的代码(Copy Your Code)” 将根据你的参数而改变,你可以实时看到效果。



JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

10、复制你的代码

在前面我曾经提到:为了方便在网页小窗口浏览生成的代码,设置向导给出的代码是按各项参数分行了的,如果复制后就直接粘贴,可能会使播放器不能正常工作,我建议先把代码复制到“记事本”后,删除段落标记,注意每项参数之间还要保留一个空格位,再复制到空间或博客。

仔细观察设置向导给出的Embeded代码,它们大致可以分为以下几项:

*src:(已介绍)
*width:(已介绍)
*height:(已介绍)
*allowscriptaccess:这是Adobe Falsh Player 6.0以后开始支持的参数。这个参数是控制在HTML网页中,swf的ActionScript是否允许调取JavaScript,它有三个选项:

·总是允许always:默认值,一般保持默认即可。
·只允许同域名sameDomain:仅当SWF文件与HTML网页来自同一域名时才允许调取。
·不允许never。

*allowfullscreen:是否允许切换到全屏,默认是允许true。
*flashvars:即flash变量。我们可以发现绝大部分用户对JW Player的个性定制都体现在这里,定制得越具体,这个参数包含的内容就越复杂。

我们可以看到,设置向导给出参数的格式是这样的:

flashvars='
变量
1=
变量值
&
变量
2=
变量值
&
变量
3=
变量值
&
……变量
n=
变量值
'

我建议把“
&
”改为“
&amp;
”!

修改之后就是这样:

flashvars='
变量
1=
变量值
&amp;
变量
2=
变量值
&amp;
变量
3=
变量值
&amp;
……变量
n=
变量值
'

如果你嫌处理Embeded代码这么麻烦,那么我介绍一个更方便的方法:请用浏览器打开这个网页:http://ckeditor.com/demo
,并点击左上角的“源码”按钮:


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

全选框内的文本并删除:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

将设置向导给出的Embeded代码复制进来,再次点击左上角的“源码”按钮:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

点击之后是这样:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

再点击一次左上角的“源码”按钮,此时框内的代码已被修正了:

JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

五、补充说明

1、如果要商业性地使用JW Player,必须向官方购买许可,比如:

*带广告的站点
*由商业机构拥有或运营的站点
*用于产品推广的站点
*提供捆绑有LongTail产品的产品

具体参见:https://www.longtailvideo.com/players/order


JW Player使用简介 - Coriolanus - Coriolanus 音乐分享

2、限于Adobe Falsh Player的安全措施,JW Player不允许加载来自不同域名的播放清单文件、swf文件(例如皮肤插件)和ID3等数据。但是可以通过在网站放置crossdomain.xml文件来迂回地解决,详见:http://developer.longtailvideo.com/trac/wiki/FlashSecurity
http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html

如果要播放的媒体文件的域名与swf文件、播放清单文件的域名不一致,插件无法加载。

3、虽然官网LongTail提供有很多现成的皮肤Skin及插件Plugins,但是用户还是可以自己设计自己的皮肤及开发自己的插件,JW Player自定义的弹性算是空前的,有兴趣的朋友可以参见:http://developer.longtailvideo.com/trac/wiki/SkinningThePlayer
http://developer.longtailvideo.com/trac/wiki/PluginsBuilding

4、更正一点:JW FLV Player支持XML和SRT两种字幕文件。



1、限于本人的水平和精力,本篇仅仅是对JW FLV Player非常粗浅的介绍,例如皮肤设计、plugins的开发、API Calls、RTMP/HTTP Streaming、Crossdomain security以及JW Player家族中其他在线播放器如:WMV Player、Image Rotator等都没有涉及。

2、本篇介绍如与LongTailVideo官网有不一致之处,以官网为准。

3、虽然本篇介绍是应老胡
的请求而写的,其实最大的受益者却是本人。为了完成这篇介绍文章,促使本人更深入地去学习这款非常值得研究的播放器,孔子说:“学而时习之,不亦悦乎?”自己亲身实践带来的快感远远不是由别人灌输给你的所能比拟的!

4、近一段时间我还特别去学习了字幕插件,在介绍XML播放清单
之后,我会把我学习字幕插件的心得分享给你们。在介绍字幕插件时,我将会涉及插件如何再附加其他参数,还会提到dock,因为碰巧字幕插件支持dock。同样的,当我搞清楚JW FLV Player的字幕插件之后,那种喜悦也是难以言表。









发表在 article | 标签为 | JW FLV Player已关闭评论

IIS7 Discuz! X1伪静态设置方法

IIS7官方: http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

微软在IIS7中添加了URL的重写模块,并且免费使用,可以导入.htaccess规则,确实是个不错的选择

URL Rewrite Module

URL Rewrite Module是一个基于规则的URL重写引擎,用于在URL被Web服务器处理之前改变请求的URL。对于动态Web应用程序,它可以为用户和搜索引擎提供友好的URL,URL重写和重定向是基于HTTP头和服务器变量的,并可以对站点内容进行访问控制。

iis 7的主机才支持伪静态模块.

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name=”topic”>
                    <match url=”^topic-(.+)\.html$” />
                    <action type=”Rewrite” url=”portal.php?mod=topic&amp;topic={R:1}” />
                </rule>
                <rule name=”article”>
                    <match url=”article-([0-9]+)\.html$” />
                    <action type=”Rewrite” url=”portal.php?mod=view&amp;aid={R:1}” />
                </rule>
                <rule name=”forum”>
                    <match url=”^forum-([0-9]+)-([0-9]+)\.html$” ignoreCase=”false” />
                    <action type=”Rewrite” url=”forum.php?mod=forumdisplay&amp;fid={R:1}&amp;page={R:2}” appendQueryString=”false” />
                </rule>
                <rule name=”thread”>
                    <match url=”^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$” />
                    <action type=”Rewrite” url=”forum.php?mod=viewthread&amp;tid={R:1}&amp;extra=page={R:2}&amp;page={R:3}” />
                </rule>
                <rule name=”group”>
                    <match url=”^group-([0-9]+)-([0-9]+)\.html$” />
                    <action type=”Rewrite” url=”forum.php?mod=group&amp;fid={R:1}&amp;page={R:2}” />
                </rule>
                <rule name=”space”>
                    <match url=”^space-(username|uid)-(.+)\.html$” />
                    <action type=”Rewrite” url=”home.php?mod=space&amp;{R:1}={R:2}” />
                </rule>
                <rule name=”Xrewrite”>
                    <match url=”^([a-z]+)-(.+)\.html$” />
                    <action type=”Rewrite” url=”{R:1}.php?rewrite={R:2}” />
                </rule>
            </rules>
        </rewrite>
  <httpErrors errorMode=”Detailed” />
  <asp scriptErrorSentToBrowser=”true” />
  </system.webServer>
<system.web>
<customErrors mode=”Off” />
<globalization requestEncoding=”utf-8″ responseEncoding=”utf-8″ fileEncoding=”utf-8″ />
</system.web>
</configuration>

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

index301.htaccess 必须写到.htaccess后缀的文件里,
1.在iis7的URL Rewrite中右侧点击Import Rules导入.htaccess文件

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^henghengw.com$ [NC]
RewriteRule ^(.*)$ http://www.henghengw.com/$1
[R=301,L]
</IfModule>

其实应该也可以试试直接在web.config里写规则

<rule name="index301" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="^henghengw.com$" />
          </conditions>
          <action type="Redirect" url="http://www.henghengw.com/{R:1
}" redirectType="Permanent" />
        </rule>
 
 

发表在 web server | IIS7 Discuz! X1伪静态设置方法已关闭评论

最新优惠25%的godaddy优惠码,ixwebhosting优惠码,godaddy最新优惠码

Godaddy默认为购买亚太机房主机(Fast Asia Pacific-based servers),国内访问速度慢,记得要购买美国机房的主机。
美国机房(Our World-Class Data Center)购买链接入口:
欧洲机房(Fast European-based servers)购买链接入口:
亚太机房主机(Fast Asia Pacific-based servers)购买链接入口:
 
------------------------------------------------
GoDaddy ssl证书设置教程 
-------------------------------------------------

1 购买所有虚拟主机产品优惠20%    cjcshare20
2 购买100美元及以上优惠20美元     cjc20hun
3 购买30美元及以上优惠5美元     cjcsave
4 购买75美元以上优惠15%     cjcdeal
5 $7.49 .COM 注册,续费,转移     cjc695dom
6 $7.49 .org 注册,续费,转移     cjctld749
7 $7.49 .net 注册,续费,转移     cjctld749
8 购买VPS优惠20%     cjcvps20
9 购买独立主机优惠20%     cjcded20
-------------------------------------------------

 1.Godaddy主机优惠码(通用)

优惠券: cjchost20
购买所有主机产品优惠20%. (独立主机例外)
有效期: 无限制

优惠券: cjcrebone
价格减$1元

优惠码: cjctenoff
购买50美元及以上商品使用此优惠码可以优惠10美元
有效期:无限制

优惠码: cjcsave
购买30美元及以上商品使用此优惠码可以优惠 5 美元
有效期:无限制

优惠码:cjcdeal 购买75美元以上优惠15%

优惠码:cjcVDHALF 购买Virtual Dedicated Hosting 主机一年或一年以上者,优惠50%。

优惠码: cjcfat75 消费75美金或以上者,优惠15%。

优惠码: cjc4U75 消费75美金或以上者,优惠15%。

2.Godaddy域名注册优惠码

优惠码: cjc695dom
说明: $7.45 .COM 注册,续费,转移

优惠码:cjc4Udom 域名注册 $7.49

优惠码:cjcdollar 优惠一美元,域名续费和org域名注册除外。

SSL证书

       cjcssl12t2 : 12.99美元每年

 

发表在 article | 最新优惠25%的godaddy优惠码,ixwebhosting优惠码,godaddy最新优惠码已关闭评论

视频转换 视频水印 mencoder+ffmpeg+aviysth+ffdshow

印视频转换总结(win):

 

一.              视频转换水印资料的搜集整理如下:

二.              1.现在网络上大多都用页面中内嵌flash播放器播放flv格式的视频,原理是通过mencoder+ffmpeg+avisyth通过mencoder将上传的视频通转换为avi格式,用ffmpeg将avi格式转换为flv格式,在配合avisyth添加水印,字幕,以及格式的转换等,了解到还有一种添加水印的方式就是用ffmpeg将视频按每一帧截图,添加水印,再用mencoder将图片合成视频,比较繁琐。

三.              mencoder(隶属Linux下MPlayer播放器的一个插件)

1.转换格式:

mencoder 7.wmv -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o 7.avi

       2.字幕格式:(一般是通过.srt的文件来加字幕的)

mencoder ../file/test.mov -o ../flv/zbzbzb.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:v4mv:last_pred=3 -subpos 5 -subfont
-text-scale 10 -unicode -font c:\arial.ttf -sub ../file/test.srt -lavfopts
i_certify_that_my_video_stream_does_not_use_b_frames -srate 22050

四.              ffmpeg(有很多版本,我用的是svn)

1.转换格式:

C:\ffmpeg\ffmpeg –y –i c:\avi\1.avi –ab 56 –ar 22050 –r 15 –b 320k –s 320*240 c:\1.flv

2.水印格式

①:ffmpeg -y -i 1.avs -b 320k avs.flv

②:mpeg -i /home/erlang/1.wmv -vhook ‘/usr/lib/vhook/watermark.so -m 1 -f logo.png’ test_1.mpg(我找到了vhook文件夹,但不知道如何编译入ffmpeg)

五.AviSyth(是一个滤镜,也可以叫插件,有自己的语法)

       编写格式:

LoadPlugin("C:\WINDOWS\system32\vsfilter.dll")

video =DirectShowSource("C:/ffmpeg/avi/3.avi")

logo = ImageSource("C:/ffmpeg/logo.png")

logomask = ImageSource("C:/ffmpeg/logo.png")

overlay(video,logo,mask=logomask, opacity=0.8)

Subtitle("Anterms software",size=28, align=2, first_frame=0, last_frame=1000)

 

a1 = FadeIO0(ImageSource("c:/1.jpg", 0, 124, 25), 7)

a2 = FadeIO0(ImageSource("c:/2.jpg", 0, 124, 25), 7)

return a1 + a2

六.在c#中的调用

Process p = new Process();//建立外部 调用 线程

p.StartInfo.FileName = @"c:\ffmpeg1\ffmpeg.exe";//要调用外部程序的绝对路径

p.StartInfo.Arguments = @"-i c:\1.avs -ab 56 -ar 22050 -b -r c:\text123.flv";//参数(这里就是FFMPEG的参数了)

p.StartInfo.UseShellExecute = false;//不使用操作系统外壳程序 启动 线程(一定为FALSE)

p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中

p.StartInfo.CreateNoWindow = false;//不创建 进程 窗口

p.Start();//启动线程

p.BeginErrorReadLine();//开始异步读取

p.WaitForExit();//阻塞等待进程结束

p.Close();//关闭进程

p.Dispose();//释放资源

 

七:可能出现的问题,只能转换其中几种,或者转换后播放视频倒着,或者用mencoder转换后的没法加水印,出现未找到用于流呈现的筛选器,解决方法,安装ffdshow解码器,给avisyth配置相应的参数和插件,通过avs的加载插件或者从注册表更改对应的选项即可。

 

附录:

一.Ffmpeg的参数内容

-formats 输出所有可用格式

-f fmt 指定格式(音频或视频格式)

-i filename 指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头

-y 覆盖已有文件

-t duration 记录时长为t

-fs limit_size 设置文件大小上限

-ss time_off 从指定的时间(s)开始, [-]hh:mm:ss[.xxx]的格式也支持

-itsoffset time_off 设置时间偏移(s),该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持

-title string 标题

-timestamp time 时间戳

-author string 作者

-copyright string 版权信息

-comment string 评论

-album string album名

-v verbose 与log相关的

-target type 设置目标文件类型("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...)

-dframes number 设置要记录的帧数

视频选项:

-b 指定比特率(bits/s),似乎ffmpeg是自动VBR的,指定了就大概是平均比特率

-vb 指定视频比特率(bits/s)

-vframes number 设置转换多少桢(frame)的视频

-r rate 桢速率(fps)

-s size 分辨率

-aspect aspect 设置视频长宽比(4:3, 16:9 or 1.3333, 1.7777)

-croptop size 设置顶部切除尺寸(in pixels)

-cropbottom size 设置底部切除尺寸(in pixels)

-cropleft size 设置左切除尺寸 (in pixels)

-cropright size 设置右切除尺寸 (in pixels)

-padtop size 设置顶部补齐尺寸(in pixels)

-padbottom size 底补齐(in pixels)

-padleft size 左补齐(in pixels)

-padright size 右补齐(in pixels)

-padcolor color 补齐带颜色(000000-FFFFFF)

-vn 取消视频

-vcodec codec 强制使用codec编解码方式('copy' to copy stream)

-sameq 使用同样视频质量作为源(VBR)

-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率

-passlogfile file 选择两遍的纪录文件名为file

-newvideo 在现在的视频流后面加入新的视频流

 

高级视频选项

-pix_fmt format set pixel format, 'list' as argument shows all the pixel formats supported

-intra 仅适用帧内编码

-qscale q 以<数值>质量为基础的VBR,取值0.01-255,约小质量越好

-loop_input 设置输入流的循环数(目前只对图像有效)

-loop_output 设置输出视频的循环数,比如输出gif时设为0表示无限循环

-g int 设置图像组大小

-cutoff int 设置截止频率

-qmin int 设定最小质量

-qmax int 设定最大质量

-qdiff int 量化标度间最大偏差 (VBR)

-bf int 使用frames B 帧,支持mpeg1,mpeg2,mpeg4

音频选项:

-ab 设置比特率(单位:bit/s,也许老版是kb/s)

-aframes number 设置转换多少桢(frame)的音频

-aq quality 设置音频质量 (指定编码)

-ar rate 设置音频采样率 (单位:Hz)

-ac channels 设置声道数

-an 取消音频

-acodec codec 指定音频编码('copy' to copy stream)

-vol volume 设置录制音量大小(默认为256)

-newaudio 在现在的音频流后面加入新的音频流

字幕选项:

-sn 取消字幕

-scodec codec 设置字幕编码('copy' to copy stream)

-newsubtitle 在当前字幕后新增

-slang code 设置字幕所用的ISO 639编码(3个字母)

Audio/Video 抓取选项:

-vc channel 设置视频捕获通道(只对DV1394)

-tvstd standard 设置电视标准 NTSC PAL(SECAM)

 

 

二.Mencoder参数

-of lavf:是输出文件格式,这里不是flv而是lavf,是因为flv属于libavformat;
-oac oac=output audio codec 编码音频部分。这儿是mp3lame。
-oac mp3lame 音频采用mp3编码
-lameopts abr:br=56:
br是指设置音频比特率为56(比特率:每秒钟输出的音频大小,单位kb/s);
#-lameopts mode=3:cbr:br=32:vol=1,mode=3是音体声,mode=0单声道;  vol=1-10控制音量
# -lameopts 顾名思义,即lame选项,这儿只需定义一下码率就可以了。
vbr 设定音频码率的方法
0  cbr average bitrate
1  mt
2  rh   constant bitrate Also forces CBR mode encoding on subsequent ABR presets modes.
3 abr
4 mtrh
br 就是设定我们所需要的码率值,格式为br=<0-1024>,只能在vbr为0和3的情况下才能使用该选项。
-ovc lavc #ovc=output video codec ;
-ovc 编码文件的视频部分。主要有以下几个选项
-ovc copy        不进行编码,只是复制视频流
-ovc divx4       编码成DivX4/DivX5
-ovc raw         编码成任意不压缩的格式(用‘-vf format’设定具体的格式)
-ovc lavc        使用libavcodec进行编码
-lavcopts vcodec=flv:vbitrate=350:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1
# 对lavc进行一些设置,vcodec=flv:指定视频编码器为flv
# vbitrate=500:指定视频比特率为500(低品质为150kb/s,中等品质为400kb/s,高品质为700kb/s)
# mbd:宏模块选择算法,值为0~2默认为0,值越大转换越缓慢,但在品质和文件大小方面有好处;
# mv0:编译每个宏模块并选择最好的一个,当mbd=0时无效;
# v4mv:会稍微增加品质,mbd>0时效果更明显;
# trell:量子化网格搜索,对每8×8block找到最优化编码;
# cbp:只能和trell一期使用,评估失真的图像块编码;
# last_pred=3:与上一帧相比的移动数量预测,值为0~99,1~3比较合适,大于3时对品质的提高已经无关紧要,但却会降低速度;
# dia=4:移动搜索范围,值为-99~6,对于快速转换,-1是个不错的值,如果不是很重视速度,可以考虑2~4;
# cmp=6:值为1~2000,默认为0,设置用于全象素移动预算的比较函数
# vb_strategy=1:对动作很大的场景会有帮助,对有些视频,设置vmax_b_frames会有损品质,加上vb_strategy=1会好点。
-vf scale=512:-3 #5-vf表示视频格式,scale是缩放,512:-3表示强制将宽度设置为512,高度写为-3表示保持高宽比
-ofps 12 帧速率设置,现为12fps
-srate 22050 声音采样频率设置,现为22K

 mencoder进行操作的常用方法: mencoder infile.* -o outfile.* [-ovc 目标视频格式] [-oac 目标音频格式] [-of 目标文件格式]

   1.转换成flv文件: mencoder infile.* -o outfile.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050
                                mencoder infile.rmvb -o outfile.flv -vf scale=-3:150 -ofps 12 -oac mp3lame -ovc xvid -xvidencopts bitrate=112
   2.转换成avi文件: mencoder infile.* -o outfile.avi -of avi -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600

   3.转换成wmv文件(复杂写法,其中高级参数可以省去): mencoder infile.* -o outfile.wmv -of lavf -ofps 25 -oac mp3lame -lameopts cbr:preset=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=320:240 -srate 22050 -sws 9 -subcp cp936 -subpos 0 -subalign 0 -subfont-text-scale 3 -lavfopts i_certify_that_my_video_strea

   其中-ovc,-oac和-of是必须的,-ovc是指定视频codec,指定了ovc之后通常带一个该codec的opt参数,-oac是指定音频codec,也会在其后带一个codec的opt参数.可以指定细节以决定视频音频质量和转换速率.具体的细节可以参看专业的技术文档.

 

RMVB转AVI

mencoder 1.rmvb -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o rmvb.avi

RM转AVI

mencoder 1.rm -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o rm.avi

MPEG转AVI

mencoder mp4.mpeg -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o mp4.avi

MOV转AVI

mencoder qtime.mov -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o qtime.avi

WMV转AVI 包括WMV7到WMV9,只实验到WMV9

mencoder m7.wmv -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o m7.avi

RV转AVI

mencoder 1.rv -oac mp3lame -lameopts preset=64 -ovc xvid -xvidencopts bitrate=600 -of avi -o rv.avi

 

题外:

一.在用了ffmept的时候如果是多个用户同时上传,要在同一时间返回给用户信息是不现实的,一般的大型视频网站有专门的转换

服务器,而不是在web发布的服务器上直接转换的,使用队列来实现,一次转一个,实现分布式处理,多服务器并行处理,系统的负载均衡处理

用户上传后,调用这个类,他就会扫描一遍数据库,发现没有转换的循环转换,把转换和网站脱离开来。

 

转换:

 

1.可以把全部未转换的select出来,然后用for(XXX)来循环这个数据集

2.用select top 1 加while来扫描...

第一种方法就安全一点,但在这个类(或者方法)执行(数据集取出来后)过程,再有用户上传,也不会被加入转换队列,需要等当前转

换队列完成后,再有用户上传,才会被加到转换队列...

第二种方法就比较危险一点,毕竟是用while,只要中间逻辑出现任何错误,就有可能出现死循环...但是用while和select top 1

的话,转换队列是非常灵活的...是取一条,转一个...也就是说,只要这个while没完成(就是说数据库中还有没被转换的,包括转换

开始后才增加的数据),他都会调出来加到队列转换...相对实时一点...

 

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

另一方法

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

实际上是利用.Net中的Process对象来实现的。

 

 
string
 str = @"d:\test.avi   d:\test_allen.flv"
;
            RunFFMpeg(str);

 

 
//运行FFMpeg的视频解码,
            
public
 void
 RunFFMpeg(string
 strCmd)
            {
                //创建并启动一个新进程
            
     Process p = new
 Process();
                //设置进程启动信息属性StartInfo,这是ProcessStartInfo类,包括了一些属性和方法:
            
     p.StartInfo.FileName = "ffmpeg.exe"
;           //程序名
            
     p.StartInfo.Arguments = " -i "
 + strCmd;    //执行参数
            
     p.Start();
            }
            //运行Cmd.exe执行Dos 命令,并返回执行结果
            
public
 string
 RunCmd(string
 command)
            {
                //创建并启动一个对进程
            
     Process p = new
 Process();
                //Process类有一个StartInfo属性,这是ProcessStartInfo类,包括了一些属性和方法,例如:
            
     p.StartInfo.FileName = "cmd.exe"
;           //程序名
            
     p.StartInfo.Arguments = " /c "
 + command;    //执行参数
            
     p.StartInfo.UseShellExecute = false
;        //关闭Shell的使用
            
     p.StartInfo.RedirectStandardInput = true
;   //重定向标准输入
            
     p.StartInfo.RedirectStandardOutput = true
;  //重定向标准输出
            
     p.StartInfo.RedirectStandardError = true
;   //重定向错误输出
            
     p.StartInfo.CreateNoWindow = true
;          //设置不显示窗口
            

                 p.Start();
                //p.StandardInput.WriteLine(command);        //也可以用這種方式輸入要執行的命令
            
    //p.StandardInput.WriteLine("exit");         //不過要記得加上Exit要不然下一行程式執行的時候會當機
            

                //必须创建可以自动转换完成以后,结束进程的代码
            
    return
 p.StandardOutput.ReadToEnd();        //從輸出流取得命令執行結果
            
}

另一种方法: 用MEncoder转换视频文件为Flv

mencoder 转换视频注意事项

1、下载 mencoder.exe
和 mplayer.exe  
2、将mencoder.exe
所在文件夹,加入环境变量Path里面 ,如C:\mplayer
3、微软键+R,输入cmd,命令行打入如下语法
 

 
mencoder d:\test.avi -o d:\testflv.flv -of lavf   -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=100:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=512:-3 -ofps 12 -srate 22050

语法说明:

 

 
mencoder d:\test.avi -o d:\testflv.flv  
            //将D:\test.avi 输出到 d:\testflv.flv, 参数 -o 代表输出路径
            

            -of lavf    
            //参数 -of :输出文件的格式,flv文件是属于lavf格式
            

            -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames    
            //lavf格式的参数设置,对于转换flv格式,最好加上这个长句。意思是不用bframes。
            

            -oac mp3lame   
            //输出音频编码器,这里用的mp3lame
            

            -lameopts abr:br=56   
            //是专门针对mp3lame的参数设置,abr:br=56,是设置音频比特率为56
            

            -ovc lavc  
            //输出视频编码器

//视频编码器的设置:

 

-lavcopts
            vcodec=flv:    //指定视频编码器为flv
            
vbitrate=500:  //指定视频比特率为500 ,低品质为150kb/s,中等品质为400kb/s,高品质为700kb/s
            
mbd=2:         //宏模块选择算法,值为0~2默认为0,值越大转换越缓慢,但在品质和文件大小方面有好处
            
mv0:           //编译每个宏模块并选择最好的一个,当mbd=0时无效;
            
trell:         //会稍微增加品质,mbd>0时效果更明显;
            
v4mv:          //量子化网格搜索,对每8×8block找到最优化编码
            
cbp:           //只能和trell一期使用,评估失真的图像块编码;
            
last_pred=3:   //与上一帧相比的移动数量预测,值为0~99,1~3比较合适,大于3时对品质的提高已经无关紧要,但却会降低速度;
            
dia=4:         //移动搜索范围,值为-99~6,对于快速转换,-1是个不错的值,如果不是很重视速度,可以考虑2~4;
            
cmp=6:         //值为1~2000,默认为0,设置用于全象素移动预算的比较函数
            
vb_strategy=1:  //对动作很大的场景会有帮助,对有些视频,设置vmax_b_frames会有损品质,加上vb_strategy=1会好点。
            

            //mencoder的参数
            
-vf scale=512:-3:   //-vf表示视频格式scale是缩放,512:-3表示强制将宽度设置为512,高度写为-3表示保持高宽比,也可以设置为-1或-2,
            
-ofps 12            /*输出视频的帧频,一般,用于flash播放的视频帧频高了没有意义,反而会增加视频文件大小,但如果ofps设置的不合适,
                                        比如源视频帧频不是ofps的整数倍,可能会导致转换后的视频、音频不同步,
                                        似乎可以将这一参数改为-noskip来解决这一问题;*/

            -srate 22050:      //音频采样率一般为22050或44100。

Mencoder中文参考手册地址
  

http://www.mplayerhq.hu/DOCS/HTML/zh_CN/

参数说明:
  

 

 
-srate 32000 :
            //声音采样率,22050hz
            

            -af channels=2:2:1:0:1:1
            //右声道
            

            -af channels=2:2:0:0:0:1
            //左声道
            

            -stereo 0 //立体声
            -oac mp3lame :
            //输出音频使用mp3编码
            

            -lameopts mode=2:cbr:br=32 :
            //码率br=32 kbit
            

            -ovc xvid -xvidencopts bitrate=200 :
            //以xvid方式编码,码率200kbps (经实验,目前divx比xvid要快,在使用vhq功能时会稍稍影响速度)
            

            -vf scale=480:-3 -sws 9 :
            //变换至480像素宽,高度按比例缩放
            

            "C:\dance.avi"
 -o "C:\dance.XviD.avi"

            //源文件地址 -o到 输出文件地址
            

            2> 2.txt : 
            //编码日志记录地址

--------------------参数选择分析------------------------

18fps:这是以前通过多次测试得来的,一般电视剧和动画片15fps就够用了。如果场景变换不是很大,13fps就能保证播放流畅。降低fps值可以使压缩速度更快,对于电影,特别是动作片,要保证流畅无马赛克,就要提高fps,最大24就够了  

选择18fps足以应付大部分,性价比高  

音频采样率32KHz:从录音设备的得来的灵感(以下质量说明为比喻,前面的参数时原有的)  

32KHz - 32Kbps - mono比电话音好些  
44KHz - 64Kbps - J-Stereo 收音机质量  
44KHz -128Kbps - J-Stereo 通行的MP3标准质量  
44KHz -192Kbps - Stereo接近CD质量  

经过多次试验(以上是区间范围,自己可以根据需要选择)  
压片最省空间 - 使用32KHz - 32Kbps - mono,可以保证内容;  
质量要求不高 - 可用32KHz - 128Kbps - mono 性价比比较高;  
空间大高质量 - 44KHz -192Kbps - Stereo对大SD卡用户。  

视频采样率bitrate=150:  

80 - 最小空间占用率,质量最差 转换速度稍快 (与最低音频配合,大小可1min=1M)  
122 - 对底配置机器的小卡用户性价比较高(换面变化快回有马赛克)  
150 - 满足底配置机器对画质的基本要求(对非动作片比较完美)  
248 - 大卡用户的经济选择 (质量较好)  
350 - 大卡高配置的机器 (经济的体现机器优势)  
更高- 用户自己试吧  

总的来说,输出文件的大小受视频采样率、音频采样率影响效果显著,画面尺寸、fps值也影响大小。怎样设置参数要看你的个人实际需要与机器配置。  

另外,还有很多不知道的参数,请大家找找看。  

比如:pess2、pess3、动态FPS、屏幕截取、时间区间设置等  

关于音量调节:
  

carlwang 写道:个人习惯是不用耳机的,天热带着不舒服,所以声音我一向偏大。  
我的经验如果片源是DVDrip,一般在5以上,如果是rmvb一般2就够了,再大就有爆音了。  

-oac mp3lame -lameopts mode=2:cbr:br=64:vol=2 大家来试试看吧  

转换结束,会显示
  
 

Pos: 226.8s 297f (100%) 48fps Trem: 0min 5mb a-v:-0.009 [142:56]

这里边的内容,小括号里应该是转换的进度,中括号里的内容很重要,142表示视频比特率,56表示音频比特率(比特率这个词不知道用的对不对......)  

转换结束,会显示2行文字:  
Video stream: 142.564 kbit/s (17820 B/s) size: 4046677 bytes 227.080 secs 2700 frames  
Audio stream: 56.938 kbit/s (7117 B/s) size: 1616197 bytes 227.082 secs  
这2行信息我想大家都能明白,其中我一直关注的是那个142.564kbit/s,  

用过flash8自带转换工具的应该知道高级设置里有个选项是最大数据速率,  
当选中中等画质的时候,是400kb/s,而低品质也是150kb/s,也就是说,用那句命令转换的视频,其画质都不如品质的,那么,品质怎么样呢?  

看一下命令:  

 

mencoder "D:\music.wmv" -o "D:\output.flv" -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050

分析:  
-ovc > 大概是output video codec的缩写,制定输出视频编码,选用的lavc,什么意思?说是用了libavcodec的编码器;  

-lavcopts > 是lavc的options选项设置  

要设置视频编码的参数了!  
codec=flv > 说的是用的flv编码器,这个咱不理;  
vbitrate=150 > video bit rate!视频数据速率!就是它了!原来我设的是150啊!  

改成vbitrate=1000,再试试看!  
结果,和前一次一模一样......  

冷静下来,去往上看了一下官方文档,这个参数是最大数据速率,最大嘛,你设多大都一样啊,看来不是靠它来控制品质。  

结论,设置品质有2种途径:
  

1、设置-lavcopts,看这样一句命令:

 

-lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1

在-lavcopts里dia=4:cmp=6:vb_strategy=1这3条  
dia越大品质越高,如果需要快速编码,设置为-1,设为4时已经很有利于品质了;  
cmp越大品质越高,默认值0,是最快速的,一般设到3,设为6已经只会细微提高品质了,但速度会慢  
vb_strategy,大概是1或者0,默认值可能为0,我这里设为1,会对编码有帮助,这个参数我自己没有过多推敲,可能并不影响品质......  

2、加-sws选项,看下面的命令:
  
 

-sws 3

只是加一个3进去,转换后的效果和前面一种方法大致相同,视频数据速率都是422.5kb/s左右,解释一下  
-sws就是用来设置品质的,默认值为2,那么,为什么不用这种简单的方式呢?我个人认为,用前面一种方法有利于找到一个速度和品质的平衡点,毕竟变化的范围比较大。  

个人见解:

如此视频格式的转换,最好使用客户端转换,转换好了再传到服务端,因此需要做客户端的一个视频上传小软件

发表在 article | 标签为 , , | 视频转换 视频水印 mencoder+ffmpeg+aviysth+ffdshow已关闭评论

微软分布式缓存服务Velocity

使用微软分布式缓存服务Velocity Part 1

http://msdn.microsoft.com/zh-cn/partners/dd367796

使用微软分布式缓存服务Velocity Part 2

http://msdn.microsoft.com/zh-cn/partners/dd367798.aspx

 

Microsoft Distributed Cache Velocity 分布式缓存

http://blog.csdn.net/yangjian15/archive/2009/12/18/5033248.aspx

发表在 article | 标签为 | 微软分布式缓存服务Velocity已关闭评论