欢迎光临散文网 会员登陆 & 注册

视频、音频、字幕…基础知识,从完全不懂,到轻松入门

2023-04-05 15:34 作者:op200_Reek  | 我要投稿

目录

-前言

-词典

-封装

-视频

    --图片压缩

    --视频压缩

-音频

-字幕

    --字幕文件

    --字幕类型

-字体



前言

本人才疏学浅,文章内可能有错误的或不恰当的地方,欢迎各位大佬指正。

写本文的目的,是希望把这些基础知识带给大家。因为我发现网上做这方面知识科普的视频或文章,有的深度很深且难于理解、有的过于单调和松散、有的长篇大论、有的小白看不懂、有的甚至有错误;所以这篇文章将以简洁易懂适合大家入门为目标,让所有人都能学会


词典

p=per=/(这是除号)

        eg:4元每斤=4元p斤;Mbps=Mb/s

k=10^3;M=10^6;G=10^9;Mi=1024^2;Gi=1024^3;Ti=1024^4……

        tip:听说k规范上为小写,为的是与K(开尔文)区分,不确定是否如此

        tip:把Mi写作M为不规范写法,说的就是你微软

比特=bit=b;字节=Byte=B;1B=8b

帧数,单位:f=frame=帧;帧率,单位:fps=帧每秒

二进制,每位能存2个值(0-1);十进制,每位能存10个值(0-9)

        eg:10位的二进制数有2^10=1024个,4位的十进制数有10^4=4k个

        tip:常见的计算机用的存储器,每个位置只能存2个数,所以用二进制

采样,因为自然中的运动是连续的,但视音频无法记录每一刻的信息,所以只能每隔一段时间采样一次

        eg:30fps的录像就是一秒采样30次

封装

这里提出一点很多人的误解:很多人误以为一个视频文件,就必定包含音频。

实际上视频文件和音频文件是分离的,平时我们看到的大多数视频文件,都是和一个音频文件“捆绑”在一起的。要实现这种“捆绑”,就需要使用容器,也就是封装。

“容器”这个词非常形象,容器里可以放各种各样的文件。比如我可以在一个容器里塞2个视频、3个音频、4个字幕。

常见的容器格式有mp4、mkv等。

这里就得提到第二个跟多人的误区:mp4并不是视频格式,而是容器格式。

假设一个mp4文件里有一个视频流,我可以把这个视频流抽出来,放在mkv容器里,而这个视频流本身是不会有变化的,变化的仅仅是容器格式。

这里出现了第一个需要解释的词——“流”——这个词也十分形象——播放中的视频,不就是流动的画面嘛。当然,你也可以叫它轨道,网上的叫法各种各样,但总之,一个容器里可以放很多的流。

(mkv里甚至能塞入各种附件,如字体文件)

总结:视音频等文件被封装在一个容器文件中。

视频

我相信绝大多数朋友都知道,视频是由一张张图片组成的,但可能忽视了视频的压缩。

视频的每一张图片被称作一帧,图片播放速率被称作帧率(别说成帧数了啊,帧数是视频的总图片数)——以上仅仅是类比,因为视频文件压根就不是一张张图片组成的。

为什么?原因很简单,因为图片太大了!

图片压缩

假设世界上有256种颜色,那么要用一个数值来表达一个像素,每个数值就需要占用256个存储位置,一个位置为1bit,256=2^8,8bit=1Byte,那么就是每个像素占用1B——这就是8位色深的图片。

一张图片1920*1080=2073600个像素,需要占用约2MB。但显然,平常我们见到的8位1080p图片只有100KB不到,这是怎么回事?

如果现在让你想一种方法,把原来2MB的图片尽量压缩得小,你会怎么做?是不是第一反应就是,把大片大片同样颜色的区域——比如图片中央有一个800*800的白色正方形——用一个代表颜色的值、和一个代表形状和位置的值来表示?本来需要用640000B表示的白色正方形,最终只用了几B就表示出来了。

以上就是无损压缩,只不过现在的无损压缩算法比这复杂得多得多得多得…多。

常见的无损压缩格式有PNG、GIF等。

那么有损压缩又是怎么一回事?

假设现在有一大片(200,0,0)色的区域,里面混杂了一点(201,0,0)色,的像素,因为这两种颜色过于接近,我是不是可以把它们视作同一种颜色存储起来?反正肉眼看不出来嘛,能压缩成多小就压缩多小。

但这样,原本的(201,0,0)色像素就丢失了,这不就是”有损“嘛。

当然,实际上的有损压缩算法远比这复杂,大家能理解啥是有损就好。

常见的有损压缩格式有JPEG、WEBP等。

视频压缩

关于视频压缩,很多人存在误区:视频压缩就是一张张压缩后的图片拼接在一起的。

如果仅仅是图片压缩后拼接,就如上文提到的,一张1080p8bit的图片100KB=800Kb,假如一个视频30fps,那么码率就来到了惊人的24Mbps!

要知道,超高码率的2160p视频,很多也不到20Mbps。所以如果仅仅是图片压缩后拼接,那么结果就是硬盘爆炸。

所以聪明的你现在应该已经想到了帧间压缩了吧——因为视频的运动是连续的,所以赋予上个画面中的一部分一个矢量信息,那么它就能动起来了!如果一个物体匀速运动了30f,那么我们只用了1f的大小,就存储了30f的信息!

常见视频格式有AVC、HEVC等。

(常见的视频压缩格式都是有损的)

总结:视频文件是由非常复杂的算法压缩的,并不是简单的一堆图片。

音频

与视频记录每个像素的颜色一样,音频记录的是每个采样点的响度与频率,把一个个采样点的坐标串起来,就还原了原本波的形状。

如一个函数y=sinx,采样到了(0,0),(π/2,1),(π,0)三个坐标,那么生成的结果就是x∈(0,π)时的sinx图像。(实际上比这复杂很多)

常见无损格式有FLAC、WAV等。

常见有损格式有AAC、MP3、OGG、OPUS等。


字幕

字幕文件

字幕需要的是什么?起始点和结束点!

所以字幕文件本质上就是给一串字符起始点和结束点。

字幕样式就是规定字符串的字体、位置、运动。有些字幕格式是无法指定高级样式的,比如SRT。

当然实际上还是比较复杂的,有兴趣的朋友可以打开一个字幕文件看看里面的结构。

常见格式有ASS/SSA、SRT等。

以上是文本字幕,本质上是把字符渲染成图形实现的;除此之外还有图形字幕,本质上就是图片,因为很少见,就不例举了。

字幕类型

外挂字幕:字幕文件不在容器内,是单独的一个文件。

内置/内挂字幕:字幕文件封装在容器内,通常使用mkv封装,因为能同时封装字体。

内嵌字幕:不存在字幕文件,字幕是视频画面的一部分。

这里指的字幕类型是相对于视频来说的,如果不存在视频,那就没有所谓“字幕类型”;比如“外挂”是相对于视频来说是外挂,“内置”是相对视频来说是和视频封装在一起的。


字体

字体是用来规定字符的图形的。

比如“1”这个字符,你能看到它呈现的是“1”这个形状,是因为它的字体是这个形状,如果它的字体对应的形状是“2”,那么你输入1将看到2。

Windows需要安装字体,右键字体文件安装即可,安装的字体文件将被复制到Fonts文件夹中。当播放器播放字幕时,会发现字幕文件里需要某个字体,这时会让系统调用已安装的那个字体。如果那个字体没被安装,播放器将按照默认字体渲染字幕。

Android和iOS无法像Windows这样方便地安装字体,它们的字体渲染逻辑区别很大所以有时Android加载字体缓存能用到十几二十分钟。

观看含字幕文件的视频时,一定要有相应字体,否则甚至会出现字幕超出屏幕边缘的情况。

视频、音频、字幕…基础知识,从完全不懂,到轻松入门的评论 (共 条)

分享到微博请遵守国家法律