欢乐潜水艇sf简单来说的话,数据之所以能压缩,是因为其存在冗余。比如一部电影当中,主角的脸不停重复出现,这些脸之间是有冗余信息的。所以可以压缩。
因此,(在非损失的前提下)最终的压缩极限,取决于影片本身包含的不重复信息量。也就是和影片内容本身有关。
比如,任天堂红白机的很多游戏,都只有几百K或者几十K。因为其中包括的有效不重复信息并不多。你当然可以将其录制成为一部90分钟的4K影片。如果我们的压缩算法能够“聪明”地将其还原成为游戏ROM+一系列用户操作,那么压缩到MB单位甚至是KB单位理论上是有可能的。
又比如一些CG制作的影片。其本身是通过一系列美术素材+表演脚本,然后通过计算机渲染生成的。理论上,如果你只是保存这些素材和脚本,每次播放的时候渲染出片,那也是可以大大减小文件大小的。只不过目前的家用计算机算力,恐怕你得好几个小时甚至好几天才能看到一帧画面。
但是对于实拍的影片,由于灯光和背景等包括无数按照时间随机变化的“噪声”,以及人的表演很难用一组参数和公式去精确描述,导致即便你的影片内容本身极为简单重复,也很难压缩到这个数量级。
所以,对于一般意义上的4K影片内容,这种压缩率是无法实现的。因为其本身包含的有效不重复信息量就已经超过了KB或者MB这个层级。
最可怕的是有时候会出现不可名状物, 使观众陷入癫狂, 我们把这些倒霉蛋叫做赛博精神病.
你是来看剧情的还是来看比特流的, 剧情差不多不就行了, 要求那么多干嘛, 又不是不能看.
不抖机灵,严肃回答,这个问题还是有很大的脑洞发挥空间的。如果我们将这个假设建立在这些并不离谱甚至隐隐约约可以看到趋势的脑洞上,那么这个是完全由可能的。
在详细讨论这个问题之前,我们先来简单的阐述一下动画原理,即使在今天,它仍然遵循着一个古老的动画原理---无非是一张一张图片不断的切换,因为人眼的视觉残留效应,画面就运动了起来,当然,电影也是动画的一种,自从人类发明了照相机能够进行影像的记录,如果我们在一段很短的时间内不断的摄像,然后将所拍摄的照片组合起来,按照跑马灯的思路不断进行切换,那就是电影了
上面一张张连续的图片,称之为“帧”,当然到了今天,大部分的电影都以数字化的形式存储在了电脑上,于是,每一帧都可以当做是一张存储着的图片,那么,如何压缩一部电影的大小,除了讨论降低采样率或者使用一系列插值补间算法,很大程度上可以简化为如何降低每一“帧”的存储空间,也就是如何压缩每一张图片的大小。
当然,使用ARLE编码,Huffman编码或者是其它衍生压缩算法的可以在图像或者是音频上获得不错的无损压缩率,但这仍然不够,我们知道,信息论的祖师爷香农,早已在其三大定理中给出了信息无损压缩的极限,但我们也知道,一张图片中仍然存在大量人眼难以感知的冗余信息,在大部分的情况下,去除这些冗余的信息并不会对我们的视觉体验造成太大的影响,因此我们建立基于频域分析方法的图像压缩格式,例如,在下面的示范中,我们使用二维傅里叶变换,将一张图片由空间域转换为频域
因此,我们可以将大部分人眼较不敏感的高频信息去除掉,留下能量聚集高的低频信息,然后再结合其它的无损压缩算法,一张几M的图片压缩到几百甚至几十KB是完全可能做得到的。
至此,我们能够实现10%以下的压缩率,一张图片的大小压缩到了原本的1/10左右,但这仍然不够.但即使使用能量聚集度更高的DCT算法,如果进一步削减低频区域,就会导致原图变得模糊.
那么,有没有办法更进一步呢,显然,基于统计学习方法的神经网络为我们提供了一个思路,它可以将一个模糊的图像还原成一个高清的图像
甚至于说,如果我们将一张图片从彩色变成灰白,它可以直接将空间压缩到原来的1/3,再使用AI将它进行还原
这么看来,一个原始为1个G的电影,压缩到几M完全是可以办得到的,当然这个手法有些作弊,毕竟这是一个基于统计学习方法的还原方式,可能还原的数据和原来的数据并不一致,并且神经网络的整个结构,甚至会比整部电影还大得多.
那么,还有没有其它的压缩方式呢,我们来看看2018年的程序编码大赛的一等奖-地球毁灭前夕,你能想象,一个由程序演算合成的长达近5分钟的CG级视频,其大小只有64KB么
整个电影级的cg动画完全由程序实时演算生成,当然,因为比赛允许,所以其部分纹理可能是系统自带的,渲染器也是系统自带的,这也就意味着,你看到的世界不管是其物体,光照,乃至于花草的摆动,完全是程序结合系统提供的素材及运算资源演算出来的,你可以在下面的链接下载到完整的程序
尽管这种极限的动画方式,鉴于其开发的成本甚至比直接制作还更高,因此并没有得到广泛的应用,
在不少的游戏过场动画中,你可以看到原理和它差不多的案例,也就是游戏内的一些动画场景,就是使用游戏内的模型演算出来的,尽管目前来说,它们中的大部分都比较粗糙,远远达不到电影级的效果.
但这也给了我们一个思路,在未来是否有一天,我们每个人的电脑上都会带有一个标准的素材库和图形渲染器,仿线;,之后的电源,就是建立在这些素材库,渲染器和物理引擎之上,我们只需要编写好剧本.就能够通过演算合成一部CG大片,但我相信在不久的将来,这个愿景将会得以实现,到那一天,你就能靠墙上贴着的一张二维码,直接享受到一部好莱坞大片了.
一个量子比特理论可行,如若量子计算机能实际应用,你的名字都得高香农图灵一头
题主用过游戏回放吗?一个回放文件也就几百k,但是可以记录几十分钟甚至个把小时的游戏全过程。为什么可以做到这么小?因为它只是记录了游戏过程中的关键信息(xxx玩家在xxx时间xxx坐标释放了xxx技能),剩下的人物模型、地图、视觉特效、音频都在素材包里,你安装游戏的时候一起装在你电脑里了。
那么回到你的问题,这种技术理论上可以实现,把所有可能会用到的素材都提前安装在你的设备里,再下载个“剧本”让你的设备自己生成影片,这个“剧本”肯定非常小,只是你的播放器会变得很大。下载一个体积庞大的播放器和下载一部体积庞大的影片在用户角度看来并没有多大区别,此外实时演算对你的播放设备性能要求也会高得多。那么这样做有什么意义呢?
无噪点的60fps电视剧压成普通人能接受的质量,2小时大概1.0-1.4G。
如果未来机器学习,能将720P实时还原成有损但勉强能接受的1080P画面,16fps插成24fps,体积能再降一半就顶天了。
摄像器材的进步和机器学习去噪应该会越来越强,也就说摄制片源的线P这个显示尺度一定会越来越少。
可以改进的地方是,如果原始画面噪点会越来越少,那么噪点这玩意,就应该编码成脚本或硬编码的shader,根据画面光影亮度的统计数据,在后处理产生,也可以视个人爱好手动关闭,免得白白浪费几乎一倍的码流。
而且视频这玩意最终信息量有多大是很难控制的,它完全可以每一帧画面完全不同狂切还噪点狂多,让你运动向量帧复用帧压缩全都用不上。
但你要碰上slides教学课这种,信息量又少画面滞留又久还无噪点,视频每秒平均摊下来就十几k。
视频压缩你能下嘴的地方其实就是分辨率,帧速,时域的数据复用,同一色彩通道相邻像素相邻块的信息相似性。
7200秒x24帧是个很大的数字,即使文件10M大小,一帧画面才摊到57个字节,但一帧画面就得生成200万这个量级的像素。
57个字节,连1个低多边形角色的骨骼索引都不够用。就够表达7个2维矢量,能做毛线。
以我压的国王排名为例,106M 1080P 23分钟,音频大概10M,视频100M,24fps,视频平均摊到每帧才3k字节不到,目前的视频压缩技术已经非常牛逼了。
下面这个720p网课,视频码流已经到了8k字节/s。你觉还有多大压缩空间?
以老百姓能接受的质量,aac-he-v2/vbr1/2声道 的码流基本就是最低限度了,这个程度基本也得耗费30kbps。一部2小时电影光音频也要耗掉几十M了。你要求高点要弄5.1声道,码率再随便调高一点,立马100M往上了。
音频要再榨出水,那就得上音色库走类似midi这条路,这样你的音轨是小了,音色库就往几十几百G奔了,就看以后人工智能能不能根据很少的采样,还能根据乐器和人的声学特点模拟出音色库了。不过这些领域雅马哈索尼这些企业就算有能力也不会折腾,产生不了效益,就看有没个体户神仙动手了。
当然现在的视频网站还是有很大的优化余地,不管是bilibili还是油管,流量降到现有的1/2甚至1/3是完全可以做到的。
油管现在已经开始把非音乐类的视频,从127k的aac-lc音频,普遍替换成47k的aache-v1了。
首先,如果是对任意的电影视频进行无损压缩,严格意义上的不可能,具体问香农。
有损压缩,基于神经网络,大小有可能下降一两个数量级,但神经网络的开销可能远大于视频。
如果要到达你说的压缩级别,那已经不叫压缩了,那叫按剧本画电影。例子是lol吃鸡等游戏的回放文件
而是记载了黑暗游侠0分16秒在52.37这个坐标对54.34这个坐标使用了E
不过弊端也是显而易见的,就是你想观看魔兽录像你得先安装一个两个多G的魔兽争霸Ⅲ
我感觉我必须得更新一下回答啊. 有些答主提到利用圆周率\pi的多少位到多少位保存数据, 有些答主提到用用一个函数值表示这个文件的二进制序列值.
首先反驳用圆周率的位数表示二进制序列, 这个方法的前提条件是\pi是正规数. 只有在\pi是正规数的时候,\pi才包含世界上所有的序列. 这个问题并没有得到严格的数学证明, 不过统计学的方法已经指出,\pi已经极有可能是正规数了.
这个值看起来毫无规律, 但其实这个值是\pi的小数点后第[89998,90074]位的值.
所以我们只需要8个字节 89998-76 就可以表示这段76字节的数据了. 是不是很诱人?
但其实, 这只是运气好(好什么好, 我主动从\pi上抠下来的). 如果要表示一段几乎是随机的序列, 比如说一步电影的二进制或者十进制值, 你用来表示这个序列的\pi的起始位置的字节长度, 将会大于等于这个序的字节长度.
因为这一段信息的信息量是固定的, 等于其信息熵. 无论用何种方法, 都不可能用更少的信息量表示更大的信息量.
同样的, 另一些答主提出函数值, 那也是不可能的. 假如你的数据是f(x), 你用了x去表示这个f(x)数据. 那么x的字节长度一定会大于等于f(x)的字节长度.
抱歉, 这种压缩方式是不存在的, 现在没有, 以前没有, 未来也不可能有.
这是完完全全不可能的啊. 除非一个电影全是1,1,1,\cdots序列, 或者0,0,0\cdots序列等其他有规律的序列.
但是如果一部电影情节逻辑前后都一样, 让你看一分钟的短视频连续看两个小时, 你愿意吗?
其他答主说到了有损压缩, 但是如果是有损压缩, 你还看什么蓝光电影, 直接看网页版画质不可以吗?
不过如果我们把这个问题拓展一下, 存在一种方法可以用很短的信息量表示出一部电影.
没什么可能性,一堆人发的64kb的电影属于矢量形式了,基本上就是通过一些简单的代码+电脑内置好的一些素材还原的,这种方式只能从代码的出发点来制作电影。目前拍摄的电影都是以像素形式存在的,这种信息不太可能被压缩的太多,也无法用矢量的形式来表示(用矢量数据更爆炸)。现有的算法不论是帧间压缩,帧内压缩,还是各种编码算法,仅仅是优化连续图像或者消除掉冗余信息。这个当然可以无限压缩,别说64kb,6.4kb都可以,但是能传递的信息就不存在了。所以理论上没有可以把正常蓝光电影压缩到64KB的可能性。 也不要跟我说什么AI对抗生成电影,你都说生成了,那他还是压缩吗?
至少在能想象的地球人类技术上,没有什么可能性可以把蓝光压缩成64KB的,很多人分不清索引跟压缩的区别,不管磁力链还是π的位数,都是一种索引或者目录,告诉你真实的文件在哪。另外什么粒子都扯上了,再粒子量子的,跟多少KB有啥关系。那是存储的媒介,又不是存储的内容,你用一把尺子的精确长度存一部蓝光电影,他无非就是载体小了,跟硬盘变U盘一样,跟你压缩数据有个啥关系,他该多少字节还是多少字节。
现代压缩算法很少用简单哈夫曼编码,大多是字典压缩,通过字典你可以一个词对应几百个字节甚至上兆字节。
常规算法会把字典保存在压缩结果里,但字典也可以单独移出来放机器里存。理论上,只要你本地存储空间够大,存放了足够多的字典样本以后,就可以做到上G的内容只需要几个字节就能表达,比如:
只要传个几kb的剧情TXT过来,本地计算机就可以自行生成场景、人物、动作、对白、音效。
只是每个人看到的片子不太一样,比如我们看见男主是吴京。印度人看见的是男主是阿米尔·汗,美国人看见的是小李子。语言分别为普通话、印度语、英语。地点分别为上海、新德里、纽约。BOSS分别是山本五十六、伊朗总统、本·拉登。
|