精华内容
下载资源
问答
  • python解压带密码的压缩文件(非传统压缩) # # -*- coding:utf-8 -*- ...# 这种方式为暴力破解,暴力破解依赖计算机运算能力,如果密码变长,还有乱七八糟的符号。。。。那没治了(自己算一下,十位的

    python解压带密码的压缩文件(非传统压缩)

    # # -*- coding:utf-8 -*-  
    
    # @auther:LyaJpunov
    # @data:2020.12.12
    # 这个程序主要用于非传统加密破解,传统加密破解可以使用zipfile或者是rarfile,网上有许多的教程,不在赘述
    # 这个程序主要是你大概知道多少位的密码,作者很懒,懒得写,在这里作者以6位数字密码为例
    # 这种方式为暴力破解,暴力破解依赖计算机运算能力,如果密码变长,还有乱七八糟的符号。。。。那没治了(自己算一下,十位的密码,字母加数字有3656158440062976种可能,如果再长。。。)
    # 可以在此基础上添加密码库进行撞库,需要一定的社工能力,作者是没找到
    # 这个程序需要7zip程序的支持(可以调用命令行),其实就是调用7zip命令啦,懂的都懂。
    # 安装7zip到官网下载程序,安装,Linux系统可以直接使用命令行,win系统需要添加环境变量并将7zip.exe复制到“C:\Windows”这个目录,MAC...作者很穷
    # 其实很简单的就是跑7zip的程序,一直尝试直到找到解压缩的密码为止
    
    
    import os
    import subprocess
    import zipfile
    def brutecrack():
    	for a in range(0,9):
    		for b in range(0,9):
    			for c in range(0,9):
    				for d in range(0,9):
    					for e in range(0,9):
    						for f in range(0,9):
    							passwd=str(a)+str(b)+str(c)+str(d)+str(e)+str(f)
    							command='7z -P'+ passwd + ' t CarryPilot_For_LaunchPad_V1.0.zip' 
    							#unzip只能解压 传统模式的加密方式,使用范围窄;当用户使用默认方式压缩 设置密码时,不能使用unzip命令循环爆破,所以有局限
    							print("$$$$$$$$$$$$$$$$$$$$$$$$")
    							print(passwd)
    							print("$$$$$$$$$$$$$$$$$$$$$$$$")
    							child=subprocess.call(command)
    							#os.popen(command)#这个也可以用,但是不好监控解压状态
    							print(child)
    							if child==0:
    								print("#######################")
    								print("密码为:"+passwd)
    								print("#######################")
    								return
    if __name__ == '__main__':
    	brutecrack()
    
    
    展开全文
  • 史上超高压缩软件2009

    2009-09-04 14:46:16
    0.231 加入了解压时自定解压缩文件的路径.出现错误时立即停止程序而不继续压缩/解压. 优化内核程序使压缩/解压速度提高了4%.增加了使用示例.修正了几个不重要的小bug. 0.230l 由0.230完整版修改而成. 0.230 UDA的第...
  • rar压缩软件.rar

    2016-02-13 10:52:44
    RAR 是一个让你在命令行模式中管理压缩文件的控制台应用。RAR 提供压缩、加 密、数据恢复和许多其它此手册中描述的其它功能。 RAR 只支持 RAR 格式压缩文件,它默认有 .rar 扩展名。不支持ZIP 和其他格 式。即使...
  • * 对物理损伤的压缩文件的恢复能力 * 锁定,密码,文件顺序列表,文件安全和更多…… 配置文件 ~~~~~~~~ Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息 (存储在 ...
  • 视频渲染解析

    2012-12-11 12:14:03
    一个视频文件要播放出来,至少要经过以下三个重要模块的处理:分离器,解码器,渲染器。...而解码器就是将这些往往经过压缩的数据还原出来,必要的时候还要利用GPU的运算能力进行解压缩(即硬解)。
  • 关于“硬解码”与“软解码”

    千次阅读 2011-09-23 15:59:12
    由于高清视频的分辨率远远高于一般格式视频,使得高清视频的码率非常高。...因此常规地直接用CPU解码(即常说的“软”)会极大地消耗CPU的运算能力,一些较老的CPU软H.264时CPU占用率往往高达90%以上,更老的
    由于高清视频的分辨率远远高于一般格式视频,使得高清视频的码率非常高。再加上VC-1和H.264编码的压缩率很高,解码运算的运算量很大。因此常规地直接用CPU解码(即常说的“软解”)会极大地消耗CPU的运算能力,一些较老的CPU软解H.264时CPU占用率往往高达90%以上,更老的可能就放不动了。
    

        “硬解”是硬件解码的简称。简单而言,硬件解码就是通过显卡的视频加速功能对高清视频进行解码。因此硬解能够将CPU从繁重的视频解码运算中释放出来,使电脑具备流畅播放高清视频的能力。显卡的GPU/VPU要比CPU更适合这类大数据量的、低难度的重复工作。视频解码工作从处理器那里分离出来,交给显卡去做,这就叫做“硬解码”,例如NVIDIA的PureVideo、AMD的UVD技术等等。与之对应的,以前那种纯粹依靠CPU来的方式则是“软解码”。不过受到技术条件的限制,纯粹的“硬解码”在现阶段是不存在的,CPU依然在发挥一部分作用,只不过硬解码时GPU/VPU已经成为运算的主力。


    谁更“好”?
        软解码是在显卡本身不支持或者部分不支持硬件解码的前提下,将解压高清编码的任务交给CPU,这是基于硬件配置本身达不到硬解压要求的前提下,属于一个折中的无奈之举。那这么说是不是软解压就一无是处了呢?不,这要是情况而定。对于一个不看、或者不经常看高清的用户而言,如果专门为很少用到的功能进行过多支出,那无疑是一种浪费;而在保证正常应用的前提下,还能在偶尔看一下高清的时候自己的电脑配置不至于播放不了,或者播放不流畅,那么这时候一颗性能不算太次的CPU就大有用武之地了,好在现在早已是双核,甚至多核CPU的时代,这个已经不是问题。总结软解码的好处,就是成本低廉,几乎不用二次投入,就可以享受高清带来的乐趣和震撼。

        硬解码的优势是不言而喻的,一款支持VC-1、H.264和MPEG-2格式硬件加速的显卡或者集成显卡主板是高清爱好者的上佳选择。由于解压缩的任务基本全部交给了显示芯片,CPU就可以如释重负,轻松上阵,承担更多的其他任务,这尤其对于经常需要多任务运行的用户更为重要,如果让他们使用CPU负担解压任务的同时,再运行3个QQ、2个UC,运行BT、迅雷等一大堆任务,这将是一件不可想象的事情,但是如果换成硬解压方案,这又是一件很轻松的事情,看看吧,差别就是这么大。不过硬解压也并不都是优点,它也有缺憾的,比如硬件的支出,其余配置基本相同的前提下,就会比软解压方案多一些,这对于配置预算很有限的用户来说更是一个摆在面前的实际问题。另外,多了一块独立显卡,就会增加功耗,尤其是像GTX 280、HD 4870之类的高端显卡,动不动就是上百瓦,另外还要牵扯到电源的功率是否可以应付、机箱的散热是否能达到要求等等,这些都更增加了用户的整体预算。

        列举了软解压和硬解压两者的优、劣,最终还是不好确定哪个好哪个坏,还是那句话,“适合的,就是最好的”。配机预算有限,只是偶尔欣赏一下高清的用户,使用软解压方案即可;而对于高清爱好者,同时兼顾大型3D游戏的用户,一款支持多种高清格式的主流显卡或者性能不算很弱的集成主板是他们的最终选择。


    谁的播放效果更好?
        由于硬件解码尤其是全程解码是新推出的技术,所以在大部分人心目中硬件解码要比软件解码先进,因此在自己显卡支持硬件解码的情况下会千方百计地开启硬件解码设置。其实硬解解码并不是必须的,因为硬件解码的出现是当CPU性能不足以应付视频解码需求时的一种解决方案,主要作用是降低CPU占用率,如果在CPU能流畅播放高清视频硬解的作用也就不明显了。这里有人可能会说降低CPU占有率可以降低能耗,硬解确实可以降低CPU功耗,但是显卡的功耗是会增加的,而且就目前情况来看,显卡的功耗已经大幅超过CPU了,所以靠硬解来降低系统能耗是不太可能的。也有很多人而觉得让CPU处于空闲比较好,但是CPU占有率高就是电脑的使用率高,不然买这么贵的CPU就没有必要了。

    从使用角度来讲的硬件解码则有三大缺点,一是画面质量比不上软件解码,根据测试表明,软解码画面质量明显优于早期显卡的硬件解码,与最新最强显卡硬件解码播放高清相比也略占上风;二是硬件解码需要播放软件中设置,且对字幕等支持不好;三是早期支持硬解码的显卡还存在着各种各样的小毛病。当然随着技术进步这些问题可能会得到解决,但是到时CPU的性能也就更高了,软解高清的能力也许就像现在软解DVD一样了。比如现在的9600GT除了新增的“动态对比度增强”和“色彩增强”这两项视频优化技术之外,NVIDIA还提供了“去交织”、“反锯齿”和“降噪”等高清视频最重要的画面后期处理技术,并且支持双视频流解码性能超强,但是Intel Core i7 性能也令人咋舌,可以在没有任何缓存或预处理措施的情况下即时处理总容量达到200GB,合计像素数为224万亿的RAW格式照片,估计播放HDTV根本就是小菜一碟。

        当然,硬件解码对CPU性能较差的人来说还是十分重要的。但是,并不是有硬件解码的显卡就一定要用的,在Core 2 Duo下使用MPlayer + CoreAVC播放高清时即使开启反交错等滤镜也可以流畅播放。在这种情况下其实并不需要硬解。是否需要使用硬解应该视情况而定,不需要一味求新,因为这些新的概念多数是硬件厂商的营销策略。

    其实,画质孰好孰坏个人觉得还是审美角度的差异。还是一句话,适合自己的才是最好的。我们不管看电影还是电视,看的是情节,是内容而不是画质(当然画质音质要达到一定的水平),谁也不会在面前摆两台,一台硬解,一台软解,然后比较谁更好(专业人士除外),我们看电影是为了娱乐,而不是让电视来娱乐你。 


    转载:http://i.mtime.com/bunny77/blog/4721061/

    展开全文
  • “硬解码”与“软解码”的区别

    千次阅读 2014-07-21 20:18:09
    关于“硬解码”与“软解码” 忧蓝 发布于: 2010-08-02 11:03 ...因此常规地直接用CPU解码(即常说的“软”)会极大地消耗CPU的运算能力,一些较老的CPU软H.264时CPU占用率往往高达90%以上,更老的可能

    关于“硬解码”与“软解码”

    忧蓝 发布于: 2010-08-02 11:03

         由于高清视频的分辨率远远高于一般格式视频,使得高清视频的码率非常高。再加上VC-1和H.264编码的压缩率很高,解码运算的运算量很大。因此常规地直接用CPU解码(即常说的“软解”)会极大地消耗CPU的运算能力,一些较老的CPU软解H.264时CPU占用率往往高达90%以上,更老的可能就放不动了。

        “硬解”是硬件解码的简称。简单而言,硬件解码就是通过显卡的视频加速功能对高清视频进行解码。因此硬解能够将CPU从繁重的视频解码运算中释放出来,使电脑具备流畅播放高清视频的能力。显卡的GPU/VPU要比CPU更适合这类大数据量的、低难度的重复工作。视频解码工作从处理器那里分离出来,交给显卡去做,这就叫做“硬解码”,例如NVIDIA的PureVideo、AMD的UVD技术等等。与之对应的,以前那种纯粹依靠CPU来的方式则是“软解码”。不过受到技术条件的限制,纯粹的“硬解码”在现阶段是不存在的,CPU依然在发挥一部分作用,只不过硬解码时GPU/VPU已经成为运算的主力。


    谁更“好”?
        软解码是在显卡本身不支持或者部分不支持硬件解码的前提下,将解压高清编码的任务交给CPU,这是基于硬件配置本身达不到硬解压要求的前提下,属于一个折中的无奈之举。那这么说是不是软解压就一无是处了呢?不,这要是情况而定。对于一个不看、或者不经常看高清的用户而言,如果专门为很少用到的功能进行过多支出,那无疑是一种浪费;而在保证正常应用的前提下,还能在偶尔看一下高清的时候自己的电脑配置不至于播放不了,或者播放不流畅,那么这时候一颗性能不算太次的CPU就大有用武之地了,好在现在早已是双核,甚至多核CPU的时代,这个已经不是问题。总结软解码的好处,就是成本低廉,几乎不用二次投入,就可以享受高清带来的乐趣和震撼。

        硬解码的优势是不言而喻的,一款支持VC-1、H.264和MPEG-2格式硬件加速的显卡或者集成显卡主板是高清爱好者的上佳选择。由于解压缩的任务基本全部交给了显示芯片,CPU就可以如释重负,轻松上阵,承担更多的其他任务,这尤其对于经常需要多任务运行的用户更为重要,如果让他们使用CPU负担解压任务的同时,再运行3个QQ、2个UC,运行BT、迅雷等一大堆任务,这将是一件不可想象的事情,但是如果换成硬解压方案,这又是一件很轻松的事情,看看吧,差别就是这么大。不过硬解压也并不都是优点,它也有缺憾的,比如硬件的支出,其余配置基本相同的前提下,就会比软解压方案多一些,这对于配置预算很有限的用户来说更是一个摆在面前的实际问题。另外,多了一块独立显卡,就会增加功耗,尤其是像GTX 280、HD 4870之类的高端显卡,动不动就是上百瓦,另外还要牵扯到电源的功率是否可以应付、机箱的散热是否能达到要求等等,这些都更增加了用户的整体预算。

        列举了软解压和硬解压两者的优、劣,最终还是不好确定哪个好哪个坏,还是那句话,“适合的,就是最好的”。配机预算有限,只是偶尔欣赏一下高清的用户,使用软解压方案即可;而对于高清爱好者,同时兼顾大型3D游戏的用户,一款支持多种高清格式的主流显卡或者性能不算很弱的集成主板是他们的最终选择。


    谁的播放效果更好?
        由于硬件解码尤其是全程解码是新推出的技术,所以在大部分人心目中硬件解码要比软件解码先进,因此在自己显卡支持硬件解码的情况下会千方百计地开启硬件解码设置。其实硬解解码并不是必须的,因为硬件解码的出现是当CPU性能不足以应付视频解码需求时的一种解决方案,主要作用是降低CPU占用率,如果在CPU能流畅播放高清视频硬解的作用也就不明显了。这里有人可能会说降低CPU占有率可以降低能耗,硬解确实可以降低CPU功耗,但是显卡的功耗是会增加的,而且就目前情况来看,显卡的功耗已经大幅超过CPU了,所以靠硬解来降低系统能耗是不太可能的。也有很多人而觉得让CPU处于空闲比较好,但是CPU占有率高就是电脑的使用率高,不然买这么贵的CPU就没有必要了。

    从使用角度来讲的硬件解码则有三大缺点,一是画面质量比不上软件解码,根据测试表明,软解码画面质量明显优于早期显卡的硬件解码,与最新最强显卡硬件解码播放高清相比也略占上风;二是硬件解码需要播放软件中设置,且对字幕等支持不好;三是早期支持硬解码的显卡还存在着各种各样的小毛病。当然随着技术进步这些问题可能会得到解决,但是到时CPU的性能也就更高了,软解高清的能力也许就像现在软解DVD一样了。比如现在的9600GT除了新增的“动态对比度增强”和“色彩增强”这两项视频优化技术之外,NVIDIA还提供了“去交织”、“反锯齿”和“降噪”等高清视频最重要的画面后期处理技术,并且支持双视频流解码性能超强,但是Intel Core i7 性能也令人咋舌,可以在没有任何缓存或预处理措施的情况下即时处理总容量达到200GB,合计像素数为224万亿的RAW格式照片,估计播放HDTV根本就是小菜一碟。

        当然,硬件解码对CPU性能较差的人来说还是十分重要的。但是,并不是有硬件解码的显卡就一定要用的,在Core 2 Duo下使用MPlayer + CoreAVC播放高清时即使开启反交错等滤镜也可以流畅播放。在这种情况下其实并不需要硬解。是否需要使用硬解应该视情况而定,不需要一味求新,因为这些新的概念多数是硬件厂商的营销策略。

    其实,画质孰好孰坏个人觉得还是审美角度的差异。还是一句话,适合自己的才是最好的。我们不管看电影还是电视,看的是情节,是内容而不是画质(当然画质音质要达到一定的水平),谁也不会在面前摆两台,一台硬解,一台软解,然后比较谁更好(专业人士除外),我们看电影是为了娱乐,而不是让电视来娱乐你。  

     
     
     
     

    手机视频硬解码和软解码的区别

    在手机评测视频播放能力的时候经常会提到“硬解码”和“软解码”,但是很多人不太明白是什么意思,其实问题很简单。大家都知道PC都有CPU和GPU(显卡),在手机上也是有CPU和GPU。

    手机和电脑的区别主要在于电脑上的显卡是作为独立出来的一个重要部件而存在的,在手机上GPU和CPU的关系很紧密,在以前的智能机很多GPU的事都是由CPU来完成的,手机发展到如今已经有了独立的GPU。但是还是和CPU封装在一起的,由芯片开发商一起开发的。如今的高通骁龙800处理器采用的是Adreno 330 GPU,在视频和渲染方面有了极大的提升,已经难以置信的支持了4K视频的拍摄和播放。

    硬解码:由显卡核心GPU来对高清视频进行解码工作,CPU占用率很低,画质效果比软解码略差一点,需要对播放器进行设置。

    优点:播放流畅、低功耗

    缺点:受视频格式限制、功耗大、画质没有软解码好

    软解码:由CPU负责解码进行播放

    优点:不受视频格式限制、画质略好于硬解

    缺点:会占用过高的资源、对于高清视频可能没有硬解码流畅(主要看CPU的能力)

    就好比两个人一样,一个人有一个袋子,一个人只能用手,在拿东西的时候有袋子的肯定会省力一些。但是在个别情况下袋子不方便装的话可能需要手直接拿着。

    谁更好?

    软解码是在显卡本身不支持或者部分不支持硬件解码的前提下,将解压高清编码的任务交给CPU,这是基于硬件配置本身达不到硬解压要求的前提下,属于一个折中的无奈之举。那这么说是不是软解压就一无是处了呢?不,这要是情况而定。对于一个不看、或者不经常看高清的用户而言,如果专门为很少用到的功能进行过多支出,那无疑是一种浪费;而在保证正常应用的前提下,还能在偶尔看一下高清的时候自己的电脑配置不至于播放不了,或者播放不流畅,那么这时候一颗性能不算太次的CPU就大有用武之地了,好在现在早已是双核,甚至多核CPU的时代,这个已经不是问题。总结软解码的好处,就是成本低廉,几乎不用二次投入,就可以享受高清带来的乐趣和震撼。
        所以硬解码软解码是相互相成的,没有电脑或者手机只有硬解码,也没有电脑或者手机只有软解码

    展开全文
  • 软硬解码

    2018-03-19 10:06:35
    因此常规地直接用CPU解码(即常说的“软”)会极大地消耗CPU的运算能力,一些较老的CPU软H.264时CPU占用率往往高达90%以上,更老的可能就放不动了。 “硬解”是硬件解码的简称。简单而言,硬件解码就是通过...

    由于高清视频的分辨率远远高于一般格式视频,使得高清视频的码率非常高。再加上VC-1和H.264编码的压缩率很高,解码运算的运算量很大。因此常规地直接用CPU解码(即常说的“软解”)会极大地消耗CPU的运算能力,一些较老的CPU软解H.264时CPU占用率往往高达90%以上,更老的可能就放不动了。

        “硬解”是硬件解码的简称。简单而言,硬件解码就是通过显卡的视频加速功能对高清视频进行解码。因此硬解能够将CPU从繁重的视频解码运算中释放出来,使电脑具备流畅播放高清视频的能力。显卡的GPU/VPU要比CPU更适合这类大数据量的、低难度的重复工作。视频解码工作从处理器那里分离出来,交给显卡去做,这就叫做“硬解码”,例如NVIDIA的PureVideo、AMD的UVD技术等等。与之对应的,以前那种纯粹依靠CPU来的方式则是“软解码”。不过受到技术条件的限制,纯粹的“硬解码”在现阶段是不存在的,CPU依然在发挥一部分作用,只不过硬解码时GPU/VPU已经成为运算的主力。


    谁更“好”?
        软解码是在显卡本身不支持或者部分不支持硬件解码的前提下,将解压高清编码的任务交给CPU,这是基于硬件配置本身达不到硬解压要求的前提下,属于一个折中的无奈之举。那这么说是不是软解压就一无是处了呢?不,这要是情况而定。对于一个不看、或者不经常看高清的用户而言,如果专门为很少用到的功能进行过多支出,那无疑是一种浪费;而在保证正常应用的前提下,还能在偶尔看一下高清的时候自己的电脑配置不至于播放不了,或者播放不流畅,那么这时候一颗性能不算太次的CPU就大有用武之地了,好在现在早已是双核,甚至多核CPU的时代,这个已经不是问题。总结软解码的好处,就是成本低廉,几乎不用二次投入,就可以享受高清带来的乐趣和震撼。

        硬解码的优势是不言而喻的,一款支持VC-1、H.264和MPEG-2格式硬件加速的显卡或者集成显卡主板是高清爱好者的上佳选择。由于解压缩的任务基本全部交给了显示芯片,CPU就可以如释重负,轻松上阵,承担更多的其他任务,这尤其对于经常需要多任务运行的用户更为重要,如果让他们使用CPU负担解压任务的同时,再运行3个QQ、2个UC,运行BT、迅雷等一大堆任务,这将是一件不可想象的事情,但是如果换成硬解压方案,这又是一件很轻松的事情,看看吧,差别就是这么大。不过硬解压也并不都是优点,它也有缺憾的,比如硬件的支出,其余配置基本相同的前提下,就会比软解压方案多一些,这对于配置预算很有限的用户来说更是一个摆在面前的实际问题。另外,多了一块独立显卡,就会增加功耗,尤其是像GTX 280、HD 4870之类的高端显卡,动不动就是上百瓦,另外还要牵扯到电源的功率是否可以应付、机箱的散热是否能达到要求等等,这些都更增加了用户的整体预算。

        列举了软解压和硬解压两者的优、劣,最终还是不好确定哪个好哪个坏,还是那句话,“适合的,就是最好的”。配机预算有限,只是偶尔欣赏一下高清的用户,使用软解压方案即可;而对于高清爱好者,同时兼顾大型3D游戏的用户,一款支持多种高清格式的主流显卡或者性能不算很弱的集成主板是他们的最终选择。


    谁的播放效果更好?
        由于硬件解码尤其是全程解码是新推出的技术,所以在大部分人心目中硬件解码要比软件解码先进,因此在自己显卡支持硬件解码的情况下会千方百计地开启硬件解码设置。其实硬解解码并不是必须的,因为硬件解码的出现是当CPU性能不足以应付视频解码需求时的一种解决方案,主要作用是降低CPU占用率,如果在CPU能流畅播放高清视频硬解的作用也就不明显了。这里有人可能会说降低CPU占有率可以降低能耗,硬解确实可以降低CPU功耗,但是显卡的功耗是会增加的,而且就目前情况来看,显卡的功耗已经大幅超过CPU了,所以靠硬解来降低系统能耗是不太可能的。也有很多人而觉得让CPU处于空闲比较好,但是CPU占有率高就是电脑的使用率高,不然买这么贵的CPU就没有必要了。

    从使用角度来讲的硬件解码则有三大缺点,一是画面质量比不上软件解码,根据测试表明,软解码画面质量明显优于早期显卡的硬件解码,与最新最强显卡硬件解码播放高清相比也略占上风;二是硬件解码需要播放软件中设置,且对字幕等支持不好;三是早期支持硬解码的显卡还存在着各种各样的小毛病。当然随着技术进步这些问题可能会得到解决,但是到时CPU的性能也就更高了,软解高清的能力也许就像现在软解DVD一样了。比如现在的9600GT除了新增的“动态对比度增强”和“色彩增强”这两项视频优化技术之外,NVIDIA还提供了“去交织”、“反锯齿”和“降噪”等高清视频最重要的画面后期处理技术,并且支持双视频流解码性能超强,但是Intel Core i7 性能也令人咋舌,可以在没有任何缓存或预处理措施的情况下即时处理总容量达到200GB,合计像素数为224万亿的RAW格式照片,估计播放HDTV根本就是小菜一碟。

        当然,硬件解码对CPU性能较差的人来说还是十分重要的。但是,并不是有硬件解码的显卡就一定要用的,在Core 2 Duo下使用MPlayer + CoreAVC播放高清时即使开启反交错等滤镜也可以流畅播放。在这种情况下其实并不需要硬解。是否需要使用硬解应该视情况而定,不需要一味求新,因为这些新的概念多数是硬件厂商的营销策略。


    软解:兼容性好,适用更多平台,播放高清视频CPU负载大

    硬解:与平台相关,播放高清视频更加清晰顺畅


    区别点

    我们在计算机上播放的视频文件都是经过压缩的,因为这样有利于节约存储空间;那么在播放过程,就需要进行一个反射的解压缩过程。在以前这项工作都是由CPU来完成的,对于普通分辨率的AVI、RMVB等文件,绝大多数的CPU都可以胜任;但是发展到高清视频(1080i/p)之后,数据解压缩的工作量比以前翻了数倍,这让很多处理器叫苦不迭。
      随着技术的发展,工程师们发现显卡的GPU/VPU要比CPU更适合这类大数据量的、低难度的重复工作。视频解码工作从处理器那里分离出来,交给显卡去做,这就叫做“硬解码”,例如NVDIA的PureVideo、AMD的UVD技术等等;与之对应的,以前那种纯粹依靠CPU来讲稿的方式则是“软解码”。不过受到技术条件的限制,纯粹的“硬解码”在现阶段是不存在的,CPU依然在发挥一部分作用,只不过硬解码时GPU/VPU已经成为运算的主力。
     

    • 软解码和硬解码的区别
      • 软编码:使用CPU进行编码
      • 硬编码:使用非CPU进行编码,如显卡GPU、专用的DSP、FPGA、ASIC芯片等
    • 软编码和硬编码比较
      • 软编码:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点。
      • 硬编码:性能高,低码率下通常质量低于软编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基本等同于软编码。
    • 目前的主流GPU加速平台
      • Intel、AMD、NVIDIA
    • 目前主流的GPU平台开发框架
      • CUDA:NVIDIA的封闭编程框架,通过框架可以调用GPU计算资源
      • AMD APP:AMD为自己的GPU提出的一套通用并行编程框架,标准开放,通过在CPU、GPU同时支持OpenCL框架,进行计算力融合。
      • OpenCL:开放计算语言,为异构平台编写程序的该框架,异构平台可包含CPU、GPU以及其他计算处理器,目标是使相同的运算能支持不同平台硬件加速。
      • Inel QuickSync:集成于Intel显卡中的专用视频编解码模块。
    从iOS8开始,可能是苹果想通了,开放了硬解码和硬编码API,就是名为 VideoToolbox.framework的API,需要用iOS 8以后才能使用,iOS 7.x上还不行。

    这套硬解码API是几个纯C函数,在任何OC或者 C++代码里都可以使用。

    首先要把 VideoToolbox.framework 添加到工程里,并且包含以下头文件。

    #include <VideoToolbox/VideoToolbox.h>


    解码主要需要以下三个函数

    VTDecompressionSessionCreate 创建解码 session

    VTDecompressionSessionDecodeFrame 解码一个frame

    VTDecompressionSessionInvalidate 销毁解码 session


    首先要创建 decode session,方法如下:

            OSStatus status = VTDecompressionSessionCreate(kCFAllocatorDefault,
                                                  decoderFormatDescription,
                                                  NULL, attrs,
                                                  &callBackRecord,
                                                  &deocderSession);
    

    其中 decoderFormatDescription 是 CMVideoFormatDescriptionRef 类型的视频格式描述,这个需要用H.264的 sps 和 pps数据来创建,调用以下函数创建 decoderFormatDescription

    CMVideoFormatDescriptionCreateFromH264ParameterSets

    需要注意的是,这里用的 sps和pps数据是不包含“00 00 00 01”的start code的。


    attr是传递给decode session的属性词典

            CFDictionaryRef attrs = NULL;
            const void *keys[] = { kCVPixelBufferPixelFormatTypeKey };
    //      kCVPixelFormatType_420YpCbCr8Planar is YUV420
    //      kCVPixelFormatType_420YpCbCr8BiPlanarFullRange is NV12
            uint32_t v = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange;
            const void *values[] = { CFNumberCreate(NULL, kCFNumberSInt32Type, &v) };
            attrs = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL);
    

    其中重要的属性就一个,kCVPixelBufferPixelFormatTypeKey,指定解码后的图像格式,必须指定成NV12,苹果的硬解码器只支持NV12。


    callBackRecord 是用来指定回调函数的,解码器支持异步模式,解码后会调用这里的回调函数。

    如果 decoderSession创建成功就可以开始解码了。
                VTDecodeFrameFlags flags = 0;
                //kVTDecodeFrame_EnableTemporalProcessing | kVTDecodeFrame_EnableAsynchronousDecompression;
                VTDecodeInfoFlags flagOut = 0;
                CVPixelBufferRef outputPixelBuffer = NULL;
                OSStatus decodeStatus = VTDecompressionSessionDecodeFrame(deocderSession,
                                                                          sampleBuffer,
                                                                          flags,
                                                                          &outputPixelBuffer,
                                                                          &flagOut);
    
    其中 flags 用0 表示使用同步解码,这样比较简单。
    其中 sampleBuffer是输入的H.264视频数据,每次输入一个frame。
    先用CMBlockBufferCreateWithMemoryBlock 从H.264数据创建一个CMBlockBufferRef实例。
    然后用 CMSampleBufferCreateReady创建CMSampleBufferRef实例。
    这里要注意的是,传入的H.264数据需要Mp4风格的,就是开始的四个字节是数据的长度而不是“00 00 00 01”的start code,四个字节的长度是big-endian的。
    一般来说从 视频里读出的数据都是 “00 00 00 01”开头的,这里需要自己转换下。

    解码成功之后,outputPixelBuffer里就是一帧 NV12格式的YUV图像了。
    如果想获取YUV的数据可以通过
        CVPixelBufferLockBaseAddress(outputPixelBuffer, 0);
        void *baseAddress = CVPixelBufferGetBaseAddress(outputPixelBuffer);
    

    获得图像数据的指针,需要说明baseAddress并不是指向YUV数据,而是指向一个CVPlanarPixelBufferInfo_YCbCrBiPlanar结构体,结构体里记录了两个plane的offset和pitch。


    但是如果想把视频播放出来是不需要去读取YUV数据的,因为CVPixelBufferRef是可以直接转换成OpenGL的Texture或者UIImage的。

    调用CVOpenGLESTextureCacheCreateTextureFromImage,可以直接创建OpenGL Texture


    从 CVPixelBufferRef 创建 UIImage

        CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixelBuffer];
        UIImage *uiImage = [UIImage imageWithCIImage:ciImage];
    

    解码完成后销毁 decoder session

    VTDecompressionSessionInvalidate(deocderSession)


    硬解码的基本流程就是这样了,如果需要成功解码播放视频还需要一些H.264视频格式,YUV图像格式,OpenGL等基础知识。


    还是有很多小细节要处理的,无法在这里一一说明了,有人有问题可以在评论里讨论。

    从解码到播放,大约1000行代码左右,主要是OpenGL渲染的代码比较多。


    苹果官方的示例代码:

    WWDC - Apple Developer


    苹果的例子下载链接实效了,我也找不到那个例子,我自己写了一个。

    stevenyao/iOSHardwareDecoder · GitHub


    展开全文
  •  《Java常用算法手册》旨在帮助Java语言初级程序员深入了解Java算法思想,提升其语言代码编程能力,还可以作为大中专院校学生学习数据结构和算法的参考书,也可为教师授课提供素材,同时还可以作为具有一定编程经验...
  • 今天,计算机的运算能力得到了空前的发展,而其在汉字编码方案中应用的潜力从未被充分挖掘,压缩编码方案的作者仍然在使用人工分割的方式对汉字编码。人工分割的任务量繁重,增删一个字根就需要替换多处分解结果进行...
  • C++ MD5

    千次阅读 2017-11-11 20:55:39
    因为我实在没办法去证明通过一系列的运算,累加a,b,c,d还能够有唯一性,因为就逆向去看加法,那是有无数的,MD5也只能说在概率上是不会重复的吧。所以说那个幻数,还有里面的那些数据,是不能
  • WinRAR_4.0.exe

    2011-02-04 11:34:33
    * 对物理损伤的压缩文件的恢复能力 * 锁定,密码,文件顺序列表,文件安全和更多 配置文件 Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息 (存储在 HOME 环境变量中) ...
  • 云计算企业网站建站系统,是一种全新的基于云计算的互联网应用模式。...灵活快捷,易学易懂。因为系统本身没有程序,所以最大限度的保证了您的网站的安全。...只要你下载不同的建站系统,解压缩上传至 YFTP 空间即可。
  • 算法基础篇 **章 算法和实现算法的Java语法 1.1 建立算法初步概念 1.1.1 什么是算法 1.1.2 算法的发展历史 1.1.3 算法的分类 ...**2章 压缩与解压缩算法 第3篇 算法面试篇 **3章 数学能力测试 **4章 算法面试题
  • 应用软件中应具有同样的运算能力,在软件中进行合法性判断,判断是否已经注册。 *本方案提供宏调用形式的加密方案,保证源码级加密,增加crack的难度。 *系统中合法性检查提供各种延迟处理方案,让crack更加复杂,...
  • 语言族的封闭性质 11、2广义时序机映射 11、3三元族的其它封闭性质 11、4抽象语言族 11、5AFL运算的独立性 11、6小结 12、1定义 第十二章 计算复杂性理论 12、2线性加速、带压缩和带数目的...
  • 本书的特色有二,旨在提高读者的问题求解能力,使读者能够理解算法设计的过程和思想:一是强调算法设计的创造性过程,注重算法设计背后的创造性思想,而不拘泥于某个具体算法的详细讨论;二是将算法设计类比于定理...
  • 支持64位操作系统,具备64位运算及寻址能力,发挥硬件应有效能。 弹性 支持本地磁盘、FTP、HTTP、SFTP、ODBC等方式读取日志,完全无障碍。 支持外部数据库,如MySQL、MS-SQL及Oracle等企业级数据库,数据分割完成...
  • 实现了bzip2解压缩 flate 实现了RFC 1951中所定义的DEFLATE压缩数据格式 gzip 实现了RFC 1951中所定义的gzip格式压缩文件的读和写 lzw 实现了 Lempel-Ziv-Welch编码格式的压缩的数据格式 zlib 实现了RFC...
  • 首次在 CNN 中成功的应用了 ReLU, Dropout 和 LRN,并使用 GPU 进行运算加速 ImageNet-2012验证集 56.72%/79.17% VGG19 在 AlexNet 的基础上使用 3*3 小卷积核,增加网络深度,具有很好的泛化能力 ImageNet-2012...
  • DES数据加密

    2013-06-07 15:29:12
    例如,大家都知道的pkzip,它既压缩数据又加密数据。又如,dbms的一些软件包总是包含一些加密方法以使复制文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加密算法都要有高效的加密和解密能力。 ...
  • 第四部分是每日一题,每日一题是在交流群(包括微信和 qq)里进行的一种活动,大家一起 一道题,这样讨论问题更加集中,会得到更多的反馈。而且 这些题目可以被记录下来,日后会进行筛选添加到仓库的题解模块。 ...
  • 手机 pdf 阅读器

    2009-02-12 23:00:29
    对于大家意见比较大的耗电量的问题,改进阅读时的算法及绘图方式,运算量最高可降至上一版本的2%,平均值为上一版本的6%左右,但由于阅读时耗电量的大头仍然是屏幕发光引起的,因此,只能在一定程序上减少耗电量。...
  • 2.8 子查询嵌套 39 2.9 谓语前推 42 2.10 使用物化视图进行查询重写 44 2.11 确定执行计划 46 2.12 执行计划并取得数据行 50 2.13 SQL执行——总览 52 2.14 小结 53 第3章 访问和联结方法 55 3.1 全扫描...
  • 2.8 子查询嵌套 39 2.9 谓语前推 42 2.10 使用物化视图进行查询重写 44 2.11 确定执行计划 46 2.12 执行计划并取得数据行 50 2.13 SQL执行——总览 52 2.14 小结 53 第3章 访问和联结方法 55 3.1 全扫描...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

解压缩运算能力