发布网友 发布时间:2022-04-20 09:05
共3个回答
懂视网 时间:2022-04-12 02:52
几乎所有的 视频 播放 器,如VLC、MPlayer、 Xine,包括DirectShow,在 播放 视频 的 原理 和架构上都是非常相似的。大致的来说, 播放 一个 视频 分为4个步骤:1. acess 访问,或者理解为接收、获
几乎所有的视频播放器,如VLC、MPlayer、 Xine,包括DirectShow,在播放视频的原理和架构上都是非常相似的。大致的来说,播放一个视频分为4个步骤:1. acess 访问,或者理解为接收、获取、得到;2. demux 解复用,就是把通常合在一起的音频和视频分离(还有可能的字幕);3. decode 解码,包括音频和视频的解码;4. output 输出,也分为音频和视频的输出(aout和vout)。
拿播放一个UDP组播的MPEG TS流来说吧,access部分负责从网络接收组播流,放到VLC的内存缓冲区中,access模块关注IP协议,如是否IPv6、组播地址、组播协议、 端口等信息;如果检测出来是RTP协议(RTP协议在UDP头部简单的加上了固定12个字节的信息),还要分析RTP头部信息。这部分可以参看VLC源码 /modules/access/udp.c 。在同目录下还可以看到大量的access模块,如file、http、dvd、ftp、smb、tcp、dshow、mms、v4l…等等。
而demux部分首先要解析TS流的信息。TS格式是MPEG2协议的一部分,概括地说,TS通常是固定188字节的一个packet,一个TS流可以包 含多个program(节目),一个program又可以包含多个视频、音频、和文字信息的ES流;每个ES流会有不同的PID标示。而又为了可以分析这 些ES流,TS有一些固定的PID用来间隔发送program和es流信息的表格:PAT和PMT表。关于TS格式的详细信息可以去google一下。
VLC专门做了一个的库libdvbpsi来解析和编码TS流,而调用它的代码可以参见VLC源码 /modules/demux/ts.c。
其实之所以需要demux,是因为音视频在制作的时候实际上都是编码的,得到的是分开的数据,为了传输方便必须要用某种方式合起来,这就有了各种封装格式也就有了demux。
demux分解出来的音频和视频流分别送往音频解码器和视频解码器。因为原始的音视频都是占用大量空间,而且冗余度较高的数据,通常在制作的时候就会进行 某种压缩。这就是我们熟知的音视频编码格式,包括MPEG1(VCD)、MPEG2(DVD)、MPEG4、H.2、rmvb等等。音视频解码器的作 用就是把这些压缩了的数据还原成原始的音视频数据。VLC解码MPEG2使用了一个的库libmpeg2,调用它的源文件是 /modules/codec/libmpeg2.c。VLC关于编解码的模块都放在/modules/codec目录下,其中包括著名的庞大的 ffmpeg。
解码器,例如视频解码器输出的是一张一张的类似位图格式的图像,但是要让人从屏幕看得到,还需要一个视频输出的模块。当然可以像一个Win32窗口程序
那样直接把图像画到窗口DC上——VLC的一个输出模块WinGDI就是这么干的,但是通常这太慢了,而且消耗大量的CPU。在Windows下比较好的办法是用DirectX的接口,会自动调用显卡的加速功能。
这样的功能分解使得模块化更容易一点,每个模块住需要专注于自己的事;从整体来说功能强大而且灵活。
但是事情总是不会那么简单。就拿access来说,媒体的访问是分层的,如RTSP就涉及到IPv4、TCP、UDP、RTCP、RTSP等多个层次的协 议。有些视频格式包括了传输、封装格式和编辑码格式如MPEG系列,有些封装格式是的容器,但是很多人会误解它是编解码格式,如mkv、avi这些。
音频和视频在demux之后就是的,但是需要有一套机制把它们同步起来。同时我们需要有一套机制来控制速度、暂停、停止、跳进,获取各种媒体信息,这些都是很复杂而又很重要的事情。另外也许需要在某个地方插入一些修改,来实现某种效果。如音频的EQ,视频的亮度调整之类的,VLC专门设计了access_filter、audio_filter和video_filter类型的模块来做这一类事情。
VLC比较独特的地方是集成了原来的VLS的功能,这依赖于VLC中stream_output类型的模块,它们可以把正在播放的视频以某种方式重新转码和发送出去,如http、UDP、文件等等。
MPlayer的结构与此是类似的,如/stream目录对应的是access的功能,/mpdemux对应的demux功能,/libmpcodecs是解码器,/libvo和/libao2分别是视频和音频的输出。
DirectShow也是类似的,不过分类更多一些更复杂一点。DirectShow里面的模块叫做“filter”,filter之间通过”pin”来连接。access的模块对应于DirectShow中的Source FIlter,这一类Filter只有输出pin没有输入pin。demux模块对应于splitter filter,这种filter有一个输入pin,多个输出pin。解码模块是一类transform filter,有一个输入pin、一个输出pin,输出模块对应于readering filter,有一个输入pin,没有输出pin。当然transform filter不一定是解码器,也可能是某种其他的处理。
热心网友 时间:2022-04-12 00:00
电影是人类史上的重要发明,它借助了照相化学、光学、机械学、电子学等多门学科的知识和原理。
电影最重要的原理是“视觉暂留”。科学实验证明,人眼在某个视像消失后,仍可使该物像在视网膜上滞留0.1-0.4秒左右。电影胶片以每秒24格画面匀速转动,一系列静态画面就会因视觉暂留作用而造成一种连续的视觉印象,产生*真的动感。 电影是人类史上的重要发明,它借助了照相化学、光学、机械学、电子学等多门学科的知识和原理。 电影最重要的原理是“视觉暂留”。科学实验证明,人眼在某个视像消失后,仍可使该物像在视网膜上滞留0.1-0.4秒左右。电影胶片以每秒24格画面匀速转动,一系列静态画面就会因视觉暂留作用而造成一种连续的视觉印象,产生*真的动感。 电影是人类史上的重要发明,它借助了照相化学、光学、机械学、电子学等多门学科的知识和原理。 电影最重要的原理是“视觉暂留”。科学实验证明,人眼在某个视像消失后,仍可使该物像在视网膜上滞留0.1-0.4秒左右。电影胶片以每秒24格画面匀速转动,一系列静态画面就会因视觉暂留作用而造成一种连续的视觉印象,产生*真的动感。
15年,法国的奥古斯特·卢米埃尔和路易·卢米埃尔兄弟在爱迪生的“电影视镜”和他们自己研制的“连续摄影机”的基础上,研制成功了“活动电影机”。
他们的电影机由一个暗箱组成,里面装有35毫米凿孔胶片间歇运动的牵引机构和遮光旋转机构,并装有一个摄影镜头和放映镜头。
装上摄影镜头时,可以以每秒12幅的频率摄影,获得负片。取下摄影镜头,将曝光后的负片与另一条未曝光的胶卷贴在一起曝光后转成正片。
放映时,正片装入机内。点燃灯泡后,光束穿过胶片和镜头,静止的画面以极短的间隔次高速地通过片窗,使影像在观看者的视网膜上暂留,观众便可看到一组活动的画面。
不过现在国内也有了数字影院
数字电影节目的发行不再需要洗印大量的胶片
它是存储在计算机/服务器中,由其"作为"数字放映机播放影片
有数字传输技术的保障,使整部电影在传输过程中不会出现质量损失,从而使观众可以与影片的导演看到"相同"的电影。也就是说,一旦数字电影信号发出,无论多少家数字影院,也不管它位于地球的什么位置,都可以同时映出同一个节目。同时数字放映设备还可以为影院提供增值服务,如实时播放重大体育比赛、文艺演出、远程教育等等,改变了影院胶片放映的单一模式
比如上海的IMAX立体巨幕影院
上海科技馆立体巨幕影院是目前世界上最先进的影院之一,也是全中国最大的立体巨幕影院。
立体巨幕影院银幕巨大,它高18.3米,宽24.3米(相当于6层楼房的高度),可容纳观众441位。立体巨幕影院的放映设备采用当今世界上技术含量最高、画格最大的70毫米15齿孔IMAX双机放映系统。放映立体电影时,2台放映机同步放出映像,当观众戴上特制的立体眼镜时,映像通过光的偏振原理,使画面产生强烈的立体效果,犹如景物就在眼前,有伸手可触的感觉。6层楼高的巨大画面和6+1声道的音响系统,使观众产生强烈的震撼。
热心网友 时间:2022-04-12 01:18
在放映机前有一个凸透镜,当物距在二倍焦距外,像距在二倍焦距和焦距之间时可以形成倒立缩小的实像,当物距在二倍焦距和焦距之间,像距在二倍焦距外时可以形成倒立放大的实像,当物距在焦距内时可以形成正立放大的虚像
以上是凸透镜的成像原理,所以放映机会把胶片放在二倍焦距和焦距之间,就可以形成倒立放大的实像.
然后当播放速度达到25桢(一秒播放25张图片)时我们会看到一个相连的图片形成的视频.