我在AgileIM的开发中解决视频/音频会话功能时,发现传输的音/视频数据量太大,通过一些格式转换(如BMP->JPG、或 帧间预测编码)可以适当减少带宽的需求,但是仍然不能满足需求,于是我想到了数据压缩,经过我测试、普通的音/视频数据经压缩后可以只有原来的一半大小,基本可以满足需要了。压缩/解压功能我借助了ICSharpCode.SharpZipLib 类库,为了更方便易用,我封装了ZipHelper类,实现如下:
ICSharpCode.SharpZipLib 类库可以从这里下载。
public static class ZipHelper
{
public static byte[] Zip(byte[] data)
{
MemoryStream mstream = new MemoryStream();
BZip2OutputStream zipOutStream = new BZip2OutputStream(mstream);
zipOutStream.Write(data, 0, data.Length);
zipOutStream.Finalize();
zipOutStream.Close();
byte[] result = mstream.ToArray();
mstream.Close();
return result;
}
public static byte[] Unzip(byte[] data)
{
MemoryStream mstream = new MemoryStream(data);
BZip2InputStream zipInputStream = new BZip2InputStream(mstream);
byte[] byteUncompressed = new byte[zipInputStream.Length];
zipInputStream.Read(byteUncompressed, 0, (int)byteUncompressed.Length);
zipInputStream.Close();
mstream.Close();
return byteUncompressed;
}
}
{
public static byte[] Zip(byte[] data)
{
MemoryStream mstream = new MemoryStream();
BZip2OutputStream zipOutStream = new BZip2OutputStream(mstream);
zipOutStream.Write(data, 0, data.Length);
zipOutStream.Finalize();
zipOutStream.Close();
byte[] result = mstream.ToArray();
mstream.Close();
return result;
}
public static byte[] Unzip(byte[] data)
{
MemoryStream mstream = new MemoryStream(data);
BZip2InputStream zipInputStream = new BZip2InputStream(mstream);
byte[] byteUncompressed = new byte[zipInputStream.Length];
zipInputStream.Read(byteUncompressed, 0, (int)byteUncompressed.Length);
zipInputStream.Close();
mstream.Close();
return byteUncompressed;
}
}
ICSharpCode.SharpZipLib 类库可以从这里下载。
Feedback
# re: 压缩与解压缩 ZipHelper 回复
2006-03-06 10:24 by Jiang Jin Nan不错! 收下。
# re: 压缩与解压缩 ZipHelper 回复
2006-03-06 18:58 by 淹不死的鱼asp.net开发专栏http://www.718.com.cn
轻松构建.net应用,
Asp.net空间只需155元/年。
磁盘空间: 50M
MS SQL数据库空间: 20M
支持: ASP.net、ASP
FTP管理
流量无限制
P4 2.0G以上CPU 2G内存
硬盘2*73G 操作系统: Windows2003
千兆光纤接入,百兆独享宽带
7×24小时全网监控系统,千兆防火墙系统、防攻击设备
网通/电信
查看更多虚拟主机请点击http://www.718.com.cn有更多款式配置适合你的需求。
轻松构建.net应用,
Asp.net空间只需155元/年。
磁盘空间: 50M
MS SQL数据库空间: 20M
支持: ASP.net、ASP
FTP管理
流量无限制
P4 2.0G以上CPU 2G内存
硬盘2*73G 操作系统: Windows2003
千兆光纤接入,百兆独享宽带
7×24小时全网监控系统,千兆防火墙系统、防攻击设备
网通/电信
查看更多虚拟主机请点击http://www.718.com.cn有更多款式配置适合你的需求。
浙公网安备 33010602011771号