是tomcat的lib文件夹jar包和项目的lib文件下的jar包冲突了
把项目下lib文件下和tomcat的jar的重复的全部删除。
注意,如果你是先建flex工程然后转成web形式的,请把项目中tomcat类库删除,不然还会冲突
第二种解决办法
修改了tomcat里的context.xml文件,在context 元素下添加
已有 0 人发表留言,猛击->>这里<<-参与讨论
ITeye推荐
- —软件人才免语言低担保 赴美带薪读研!—
网上有很多的rtp协议介绍的文章,我也老生常谈的拿来使用了,
先介绍rtp包头,我们都知道,rtp包头占12个字节,1个字节byte当然是8个bit了,下面是详细介绍。看下面的这张图
V:版本号; Version(2),占2个bit,数值为2,二进制表示10
P:填充字段标识; Padding(0),占1位 bit,数值为0,二进制表示0
X:扩展头标识; Extension(0),占1位 ,数值为0,二进制表示0
CSRC count(CC):贡献源数目,和后面的CSRC有关。CSRC,贡献源,指的是不同步的源。在网络中,可能会有混合器将来自不同地点的RTP流混合成一个RTP流以节省带宽, CSRC用来区分不同的源; Source Identifier(0),占4位,数值为0,二进制表示为0000
java代码表示,buffer[0]当然是指的是rtp包的第0个字节
buffer[0] = (byte) Integer.parseInt("10000000",2);
M:标记一些重要的事件(由应用程序定义); 占1位bit
PT:净荷数据类型; Payload Type,占7位bit
java代码表示,buffer[1]表示rtp包的第1个字节
buffer[1] = (byte) 96;
这里的96的数值是你自己规定的,在上一篇文章可以看到我们建立rtsp连接的时候,describe描述需要传输Payload Type,这里的数值需要和那个值相同,上文可以看到我用的96.
SN:序列号,每个分组的序列号(初始值随机),用来检测分组的丢失并恢复分组的序列;
在rtp包中占第2,3这2个字节。
java代码表示,
private void updateSequence() { setLong(++seq, 2, 4); } private void setLong(long n, int begin, int end) { for (end--; end >= begin; end--) { buffer[end] = (byte) (n % 256); n >>= 8; } }
TS:时间戳,反映RTP净荷中的第一个采样数据的采样时间。时间的粒度是净荷类型相关的。
在rtp包中,占4,5,6,7这4个字节。
java代码如下
public void updateTimestamp(long timestamp) { setLong(timestamp, 4, 8); } private void setLong(long n, int begin, int end) { for (end--; end >= begin; end--) { buffer[end] = (byte) (n % 256); n >>= 8; } }
SSRC:同步源标识符,用于标识同步源。同步源指的是,例如,一段影片的音频和视频通过不同的RTP流传输,它们是同步的。每个同步源是负责发送RTP分组并在RTP中设置序列号和时间戳的实体。
在rtp包中,占8,9,10,11这4个字节。
java代码如下
setLong((ssrc=(new Random()).nextInt()),8,12); public void setSSRC(int ssrc) { this.ssrc = ssrc; setLong(ssrc,8,12); } public int getSSRC() { return ssrc; } private void setLong(long n, int begin, int end) { for (end--; end >= begin; end--) { buffer[end] = (byte) (n % 256); n >>= 8; } }
在上面的代码中,ssrc是产生的随机数,这个数值在建立rtsp连接的时候,SETUP这个步骤上需要用到 Integer.toHexString(ssrc);的数值,这个数值的的16进制是我们需要传递给VLC客户端的 ,这个值就是上面产生随机数的16进制。不信,你可以测试一下。如果不一致,那么发送到VLC客户端就无法正常播放
这不,rtp包头这12个字节就是这样,下面是NALU的内容了
未完待续
前几章参考:
1-引言
2-Objective-C 编程
3-类、对象和方法
4-数据类型和表达式
5-循环结构
6-选择结构
7-类
8-继承
9-多态、动态类型和动态绑定
10-变量和数据类型
11-分类和协议
12-预处理程序
13-基本的C语言特性
14-Foundation框架简介
15-数字、字符串和集合
其实,从第14章开始,就隐隐约约的感觉到已经不是再介绍Objective-C了,而是介绍Objective-C应用最广的Mac OS X或iOSFoundation框架里面的内容。
Foundation框架允许你利用文件系统对文件或目录执行基本操作,这些基本操作是由NSFileManager类提供的。
使用NSFileHandle类提供的方法,可以打开文件并对文件执行多次读/写操作。NSFileHandle类的方法可以实现如下功能:
1)打开一个文件,执行读、写或更新(读取和写入)操作。
2)在文件中查找指定位置。
3)从文件中读取特定数目的字节,或将指定数目的字节写入文件。
NSFileHandle类提供的方法也可用于各种设备或套接字。很多语言中使用的框架也有类似的FileHandle。
NSURL类允许在应用中使用URL方法。这个和Java中的URL差不多
NSBundle类提供了允许在应用中使用包(bundle)的方法,包括搜索包中的特定资源。这个东西更类似于Android应用中的Resource或R之类干的活。
管理文件和目录使用NSFileManager,文件或目录使用文件的路径名为唯一标识。
完整路径也称为绝对路径,以斜线(/)开始。
特殊的代字符(~)作为用户主目录的缩写。
当前目录为".";
父目录为“..”;
这些概念和Linux里面一样。
每个文件方法都是对NSFileManager对象的调用,而NSFileManager对象是通过向类发送一条defaultManager消息创建。