chiname

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

压缩与解压缩 ZipHelper(针对音/视频数据经压缩)

压缩与解压缩 ZipHelper

Posted on 2006-03-06 09:40 zhuweisky 阅读(361) 评论(5)  编辑 收藏 收藏至365Key 所属分类: C#专栏
    我在AgileIM的开发中解决视频/音频会话功能时,发现传输的音/视频数据量太大,通过一些格式转换(如BMP->JPG、或 帧间预测编码)可以适当减少带宽的需求,但是仍然不能满足需求,于是我想到了数据压缩,经过我测试、普通的音/视频数据经压缩后可以只有原来的一半大小,基本可以满足需要了。压缩/解压功能我借助了ICSharpCode.SharpZipLib 类库,为了更方便易用,我封装了ZipHelper类,实现如下:
     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;
        }
    }

        ICSharpCode.SharpZipLib 类库可以从这里下载。

Feedback

# re: 压缩与解压缩 ZipHelper  回复   

2006-03-06 10:05 by 雁儿飞飞
数据压缩是通信中常用的手段
但是最好还是加密
BCD

# re: 压缩与解压缩 ZipHelper  回复   

2006-03-06 10:24 by Jiang Jin Nan
不错! 收下。

# re: 压缩与解压缩 ZipHelper  回复   

2006-03-06 11:30 by chuanzai
加密是不是会影响到效率?

# re: 压缩与解压缩 ZipHelper  回复   

2006-03-06 12:48 by tansm
.NET 2.0中包含了ZIP功能

# re: 压缩与解压缩 ZipHelper  回复   

2006-03-06 12:49 by tansm
在.NET 1.1中引用J#的库,也包含此功能
posted on 2006-03-06 17:02  把我的欢乐带给你  阅读(272)  评论(0)    收藏  举报