Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么这种GIF的MPEG-4压缩会产生奇怪的结果?_Python_Video_Random_Animated Gif_Mpeg 4 - Fatal编程技术网

Python 为什么这种GIF的MPEG-4压缩会产生奇怪的结果?

Python 为什么这种GIF的MPEG-4压缩会产生奇怪的结果?,python,video,random,animated-gif,mpeg-4,Python,Video,Random,Animated Gif,Mpeg 4,我想知道如果MPEG-4试图用完全随机的像素压缩图像会发生什么。所以我用Python制作了一个带有随机像素的图像 实际GIF: 这不是动画,因为动画的那个太大了。每个像素的颜色都是完全随机的。因为MPEG-4只能混合相似的颜色。所以,应该有一些混合颜色,因为颜色是相似的机会。事实并非如此 MP4帧之一: 压缩中有一个清晰的图案。它看起来像一个由尖锐的、未压缩的面片和压缩的混合面片组成的矩阵。发生什么事?在.mp4文件中,效果更为明显,单击此处可查看该文件。在我的设备上存储的原始文件中,这一点

我想知道如果MPEG-4试图用完全随机的像素压缩图像会发生什么。所以我用Python制作了一个带有随机像素的图像

实际GIF:

这不是动画,因为动画的那个太大了。每个像素的颜色都是完全随机的。因为MPEG-4只能混合相似的颜色。所以,应该有一些混合颜色,因为颜色是相似的机会。事实并非如此

MP4帧之一:

压缩中有一个清晰的图案。它看起来像一个由尖锐的、未压缩的面片和压缩的混合面片组成的矩阵。发生什么事?在.mp4文件中,效果更为明显,单击此处可查看该文件。在我的设备上存储的原始文件中,这一点更加清晰。Python通过
random
模块生成的伪随机数不应该出现这种情况

所有帧中的所有像素都是通过以下方式创建的:

[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)]

您正在尝试压缩不可压缩文件

不必讨论熵,在这种情况下,我们可以假设伪随机=随机

AVC是一种具有可变大小块、DCT压缩和时间补偿的块算法

整数DCT压缩会导致整个图像出现轻微的模糊。这是正常的压缩。我不想谈这个问题,因为它没有解决这个问题

主要的视觉伪影,模糊区域,来自于试图暂时压缩相似的块

模式出现是由在数据中寻找模式的确定性时态算法引起的。它将发现模式,即使它们可能不存在。 这就像在云中查找对象形状一样

数据将包含与下一帧具有类似亮度/色度值的块(带有移位平移)。压缩机的工作是识别这些相似性,并优化块大小以适应

偏移在渲染的“帧”中混合,导致在视频中看到的模糊块

在普通视频中,除非场景发生变化,否则在给定目标帧率的情况下,对象的边缘从一个块移动到下一个块的速度相对较慢。时间压缩算法通过移位将两个帧的块混合成单个输出块来降低分辨率并重用先前的块。这项技术在电影和电视中非常有效

假设视频的时间相关性,这对于压缩非常有效


对于随机图像中没有时间相关性的图像,它可能会产生奇怪的伪影。

MP4不是视频压缩,而是视频和音频容器格式。你说的是MPEG-4吗?@Klaus D我知道MP4是一种容器格式,但奇怪的是,当我把它直接转换成MP4时,没有音频,所以我写了MP4。我不知道所有复杂的视频内容。有关视频压缩格式的相关信息是(通过ffprobe)
h264(受限基线)(avc1/0x31637661)、yuv420p、496x496
@McLP我没有使用ffprobe。很久很久以前,我在安卓设备上编程。我通过Python(在一个名为Pydroid的应用程序中)创建了一个动画GIF。然后我从play store中随机取了一个应用程序并制作了它。mp4。是的,这是低质量的东西。从那时起,我就继续前进,并使用了一个合适的操作系统进行编码。我想我会再复制一遍,并提供相关信息。如果不能复制,那么。。。啊哈,我想,这是被否决的遗忘。我的意思是,我用ffprobe提取了信息