1.打开IIS网站,右键属性,找到HTTP头,找到MIME类型
点击新建,加上扩展名,我这边是APK,然后下面类型写
application/vnd.android.package-archive
这样用android手机访问改APK文件就可以直接下载并安装了!
2.下面介绍一下什么是MIME
以前有很多人吧ISO文件放到网站上也下载不了,就是缺少这步添加文件类型了。
用户可以通过使用MIME以设置服务器传送多媒体如声音和动画信息,这一切可能通过CGI脚本来进行。在下面的文章中,你可以了解到一此关于MIME和关于在网络上使用MIME的知识。
MIME是一种技术规范,它原来是用于电子邮件的,现在也可以用于浏览器上,传送可以供浏览器识别的信息,关于MIME的知识并是十分难懂的,有一些基本的计算机概念就可以理解了,但如果要进一步使用,就必须注意内容。实际上,我们在上网的时候就已经接触到了MIME,只是浏览器和服务器在底层实现了。
MIME有时候被错误地理解为多媒体Internet邮件扩展(Multimedia Internet Mail Extensions),这是一个错误,但是MIME在网上经常用于多媒体应用程序,所以人们以为这是它是多媒体邮件扩展,而实际上它应该被称为多用途Internet邮件扩展(Multipurpose Internet Mail Extensions),这一点一定要注意,因为有时候内容里根本没有非文本成份。MIME对于邮件系统的扩展是巨大的,因为在MIME出现以前,信件内容如果要包括声音和动画,就必须把它变为ASCII码或把二进制的信息变成可以传送的编码标准,而接收方必须经过解码才可以获得声音和图画信息。MIME提供了一种可以在邮件中附加多种不同编码文件的方法。这与原来的邮件是大大不同的。而现在MIME已经成为了HTTP协议标准的一个部分。
MIME是服务器通知客户机传送文件是什么类型的主要方法,客户机浏览器也通过MIME告诉服务器它的参数。在网上,如果接收到的文件没有MIME头,就默认它为HTML格式。但这样也不好,因为当MIME的包头是text/plain时,浏览器将直接显示而不关心它的什么字体,颜色之类的参数,这样显示出来的内容可不是很好看呀。
MIME头是什么样子要看它是用在电子邮件中还是用在浏览器上,两者内容可能有所不同。对于邮件头来说,版本号,内容类型声明,编码方式,内容描述是必不可少的。这是用于邮件头中的格式,在下面,我们将重点说到在HTTP中传送MIME头,这时MIME头要简单一些。
4.the Data Object
这部分的内容就是asf文件中数据。Data Object 中包含着很多个 Data Packets.这些Data Packets里面就是音视频数据。
先来看看 Data Object 结构
ASF_Data_ObjectGUID表示着这是Data Object 。
Total Data Packets 表示着里面包含的Data
Packets 的数量。
还是上面的那个文件作为例子,通过解析Data Object 获得信息。
Data Object (13636843 bytes) Property Value File Position 829 ( 0x33D ) Object ID 75B22636-668E-11CF-A6D9-00AA0062CE6C Object Size 13636843 ( 0xD014EB ) MMS ID 247D3E82-C389-11D3-BD6F-00C0261004E0 Packets 2081 Alignment 1 Packet Aligment 1
这个文件 Data Object 包含着2081个 Data Packets.让我看看 Data Packets 的结构。
4.1 Data PacketsError Correction Data 和 Padding Data 都是可选项目,并不一定会有。
Error correction data如果有Error Correction Data的话,Payload parsing information 是紧随其后的。
例子中蓝色框里就是 Payload parsing information
前2字节Length Type Flags 和 Property Flags。表示接下相关内容长度的类型。
Length Type Flags = 0x01,Property Flags = 0x5D;对位解析得:
Multiple Payloads Present= 1;表示这个Data Packet 不只是有1个流。
解析Length Type Flags 之后得知
Sequence Type = 0;Padding Length Type = 0;Packet Length Type=0;
也就是说之后的Packet Length、Sequence、Padding Length数据是不存在的。
然后紧着接就是4个字节的Send Time = 0x00000000、2个字节的Duration = 0x0064(100)
Payload data01 The Payload Length field is coded using a BYTE.
10 The Payload Length field is coded using a WORD.
11 The Payload Length field is coded using a DWORD.
Stream Number 对应的值为0x01,他的结构如下:
解析可知 Stream Number = 1;Key Frame Bit = 0;
通过上文 【多媒体封装格式详解】---ASF(WMV/WMA)【1】 解析得知这个例子Stream Number 为1是wma音频格式数据。所以这个Payload 中包含的数据就是wma音频数据。
Key Frame 为0 表示 没有关键帧。
通过上面 Property Flags = 0x5D的对位解析可知。
Replicated Data Length Type = 0 1(BYTE.);
Offset Into Media Object Length Type = 1 1(DWORD.);
Media Object Number Length Type = 0 1(BYTE.);
紧着接知
Media Object Number= 0x01;
Offset Into Media Object= 0x00000000;
Replicated Data Length= 0x8;
Replicated Data: CF 05 00 00 8D 0C 00 00
Payload Length 的类型是通过上面 Payload Flags得知为WORD.所以
Payload Length= 0x5CF(1487);
Payload Data : 接下来的1487个字节长度的内容就是Stream Number 1 ,wma音频数据了。
按照这个方法就可以把剩下的3个Payload依依解析出来。这样这个Data Packets 就解析完毕了。(剩下的3个Payload都是Stream Number 2 MP43格式视频数据)
这样我们就能完成基本的asf demux 的工作。把音视频流从asf封装格式里揪出来。
这个插1句,Replicated Data 中含有这个Payload 的时间戳信息。这里不再详细解释。大致格式如下。
1. You should excute Apmsetup.exe file (Apache server, Php, Mysql) on the server.
After installing it, there will be created “C:/APM_Setup/htdocs” filder on C drive.
2. Create “ChaCustom” folder in “C:/APM_Setup/htdocs” folder and copy these php files in this folder.
connect.php, registBundles.php, scanBundles.php