提供视频而不是GIF

2020-05-17 04:44:22

图形交换格式(GIF)已有30多年的历史,但它是网络文化中无处不在的一部分。我们使用GIF来保存短的、无声的和循环的视频,这些视频经常成为模因。存在创建和共享它们的实体服务,许多智能手机键盘都有内置的GIF支持。

这也很容易将它们嵌入到具有简单图像标签的网站中。但GetGIF有一个很大的缺点:庞大的文件大小。一个GIF可以比一个典型的网站(超过2MB)更大。

我不在乎任何东西是设计用来做什么的。我在乎它能做什么。

GIF从来没有被设计成提供完整的视频。几乎与之相反的是,SteveWilhite设计了这种格式来解决有效地为简单图像提供服务的问题,比如天气图和其他图形。

GIF中的每个图像都被限制为256色的调色板。图像也是使用LZW无损压缩的,这些因素使得GIF成为图形而不是像照片这样的图像的一个很好的选择,后者有更多的细节,更适合像JPEG这样的格式。

GIF还允许在一个文件中存储多个图像。这一事实使得新的GIF规范(GIF89a)很容易增加图像之间的时间延迟选项,将它们变成动画的帧。

该规范还允许使用称为应用扩展块的空间。Netscape Navigatorv2.0利用这个空间允许GIF创建者指定GIF应该循环一定次数或无限期循环。这给了我们今天通常看到的GIF。

然而,GIF现在的大小往往是几兆字节,因为我们经常使用它们来显示由大量细节图像组成的视频。请记住,每个文件都是无损压缩的。此外,GIF不在帧之间进行任何压缩,这是典型视频压缩技术的基本基础。因为GIF不会利用这种信息冗余,所以这种格式是一种非常低效的视频服务方式。

解决方案是使用一种实际上是为视频服务而设计的格式,如MP4或WebM。当Twitter在2014年增加对GIF的支持时,他们通过将上传的GIF转换成视频来实现这一功能。同年,Imgur开始做同样的事情。

现在用HTML Videoelement提供视频而不是GIF很容易,几乎所有人都支持它,但是使用视频标签而不是图像标签要做更多的工作。要提供相当于GIF的视频服务,我们可以使用如下标记:

<;视频自动播放循环静音播放<;video/webm&34;;type=";video/WebM&34;>;<;source src=";dyning-baby.mp4&34;type=";video/mp4&34;>;<;p>;您的浏览器不支持此嵌入式。

使用自动播放、循环和静音属性为我们提供了与我们从GIF中期望的相同的行为。

元素将加载浏览器支持的第一个源。在这种情况下,如果浏览器无法播放WebM视频,它将尝试播放MP4版本。

我们还提供了备用消息,以防浏览器不支持视频元素。这与浏览器不支持任何来源的情况不同。在这种情况下,元素会激发一个错误事件。

我们不必为每个源提供MIMEtype,但这样做可能会允许浏览器保存网络请求。如果它无法处理该类型,则可以移到下一个源,而不是向服务器发出请求。

用户的电源设置也会影响视频行为。例如,如果用户打开了低功率模式,则视频不会在iOS上自动播放。相反,用户应该看到控件,并且可以手动播放视频。

虽然提供视频服务不像提供GIF服务那样简单,但文件大小的节省可能是巨大的。下面的视频大小为103KB,而我转换它的GIF为4.1MB。那是尺寸缩小了97%以上。

为了快速将GIF转换成视频,有很多网站可以让你一次性转换。

要在MacOS中截取视频截图,我使用的是Kap。支持将视频保存为GIF、MP4、WebM或APNG文件。QuickTime还支持屏幕录制。

如果你使用Imgur,我遇到的一个问题是上传MP4后的视频质量很差。原因似乎是他们被重新压缩了,所以至少对Imgur来说,上传一个GIF文件让他们负责将其转换成视频会更好。

最后一点注意:根据Wilhite的说法,gif的发音是柔和的“G”,就像“jif”一样。这为我解决了这场永无止境的辩论。