压缩与解压缩 ZipHelper

简介: 我在AgileIM的开发中解决视频/音频会话功能时,发现传输的音/视频数据量太大,通过一些格式转换(如BMP->JPG、或 帧间预测编码)可以适当减少带宽的需求,但是仍然不能满足需求,于是我想到了数据压缩,经过我测试、普通的音/视频数据经压缩后可以只有原来的一半大小,基本可以满足需要了。

    我在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 类库可以从这里下载。

目录
相关文章
|
13天前
|
机器学习/深度学习 算法 数据可视化
从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
推理型大语言模型兴起,通过先思考再作答提升性能。本文介绍GRPO等强化学习算法,详解其原理并动手用Qwen2.5-3B训练推理模型,展示训练前后效果对比,揭示思维链生成的实现路径。
132 1
从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
|
消息中间件 存储 机器学习/深度学习
推荐系统入门
前言我最近正在入门推荐系统,发现这是一个非常有意思的领域。推荐系统无处不在,现在几乎所有的网站和应用里最显眼的位置和重要的位置中都是推荐系统。电商类的软件,例如Amazon、京东、淘宝、拼多多;首页和商品页面附近都是推荐你购买新的商品;视频类软件,例如Youtube、Bilibili、爱奇艺,它们的首页和搜索页中也都在推荐你可能会喜欢的影片;游戏类软件,例如原神、王者荣耀,无时无刻都在推荐你它们的
654 1
|
安全 Linux 网络安全
Centos7安装Docker
安装docker Centos7安装Docker 1.卸载Docker 2.安装docker 3.启动Docker CentOS7安装DockerCompose 1.下载 2.修改文件权限 3.Base自动补全命令:
5939 0
|
11月前
|
JSON 搜索推荐 C++
vscode如何更改背景颜色主题,黑色或白色?
【11月更文挑战第16天】在 VS Code 中更改背景颜色主题,可通过三种方式实现:1) 使用快捷键 Ctrl+K 和 Ctrl+T(Mac 上为 Command+K 和 Command+T)选择主题;2) 通过菜单中的“管理”->“颜色主题”选项选择;3) 修改 settings.json 文件中的 "workbench.colorTheme" 属性。此外,用户还可从扩展市场安装更多主题以满足个性化需求。
22800 6
|
机器学习/深度学习 自然语言处理 算法
【机器学习实战项目】10分钟学会Python怎么用支持向量机SVM进行分类预测(三)
【机器学习实战项目】10分钟学会Python怎么用支持向量机SVM进行分类预测(三)
457 0
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
104 3
java读取linux服务器下某文档的内容
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 取消挂载 umount命令使用教程
【Shell 命令集合 磁盘管理 】Linux 取消挂载 umount命令使用教程
733 1
|
安全 编译器 API
程序与技术分享:C#调用DLL的几种方法
程序与技术分享:C#调用DLL的几种方法
1014 0
【SPSS】单因素方差分析详细操作教程(附案例实战)
【SPSS】单因素方差分析详细操作教程(附案例实战)
3764 0
【SPSS】单因素方差分析详细操作教程(附案例实战)
|
JavaScript API
vue3父子组件相互调用方法详解
vue3父子组件相互调用方法详解