一种通用的视频控件的设计与实现.docxVIP

  • 1
  • 0
  • 约2.36千字
  • 约 3页
  • 2023-11-03 发布于湖北
  • 举报
一种通用的视频控件的设计与实现 近年来,学校图书馆购买了大量的教育、培训、学习等视频材料。为了方便读者使用这些资源,我们准备创建在线视频侦听系统,让读者可以通过网络查阅和使用这些视频资源。在线视频点播系统需要有可以嵌入网页浏览器的播放插件播放视频文件,但是目前的视频插件要么不能广泛支持各种格式,要么使用P2P模式,都不能满足需求。因此,需要一个可以支持目前流行的主要流媒体格式,并且支持http服务的视频播放插件。 本文主要讨论的是利用FFMPEG编解码库开发的Active X插件,通过该插件可以实现http协议下,支持各种流媒体格式播放的插件,该插件可以方便的应用到视频点播系统中。 1 使用ffmpeg解码文件 1.1 音频和视频数据的编码 视频文件有很多基本的组成部分。文件本身被称为容器(Container),容器的类型决定了信息被存放在文件中的位置。视频文件格式实际上并没有明确指出应该使用哪种编码来解析音频和视频数据;它们只是定义了音频流和视频流如何被绑定在一个文件里面。容器中包含一组流,一个容器通常有的是一个音频流和一个视频流。(流是一种想象出来的概念,用来表示一连串的通过时间来串连的数据元素)。每个流是由不同的编码器来编码生成的。编解码器描述了实际的数据是如何被编码Coded和解码Decoded的,因此它的名字叫做CODEC。从流中被读出来的叫做包Packets。包是包含了一段可以被解码成方便我们最后在应用程序中操作的原始帧的数据。 1.2 ffmpeg的数字视频编码格式 FFMPEG是一个开源的视频压缩解决方案,最初在Linux系统下面开发,目的是提供一套快速高效的以MPEG标准为基础的视频压缩编码器。经过持续的发展和改进,FFMPEG现在支持包括MPEG系列在内的众多视频压缩标准和数十种常见的音视频文件格式,成为一整套比较完备的格式转换、压缩编码、视频音频文件播放的解决方案。 FFMPEG提供了两个核心库,分别为libavformat和libavcodec。其中,libavformat用来处理解析视频文件并将包含在其中的流分离出来,而libavcodec则处理原始音频流和视频流的编解码。 1.3 录像视频帧的保存 首先建立两个队列,音频队列和视频队列,这两个队列用来保存解码后的音频帧和视频帧。然后,利用FFMPEG编解码库将视频文件解码,将解码后的音频帧和视频帧分别送入音频队列和视频队列。 解码处理的流程图如图1所示。 2 多媒体视频录像视频录像视频录像技术 视频流与音频流解码后得到相应的视频帧和音频帧,要将这些帧播放出来,需要按照一定顺序和时序将每一帧从到多媒体硬件,完成视频的播放。本课题采用SDL多媒体库实现对解码后的视频音频进行播放及播放控制。 2.1 数字视频技术 SDL是Simple Direct Media Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体底层存取库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音视频、键盘和鼠标(事件)、游戏摇杆等。 SDL可以用于编写跨平台的游戏,音频应用,视频应用等等。使用者不必知道这些操作系统的具体差别,只需要调用SDL提供的API函数就可以容易的实现音视频的操作,在使用SDL库编写的程序几乎可以不需要改变就可以在SDL支持的操作系统上编译执行。 SDL是在操作系统和具体应用程序之间加了一层屏蔽具体各种操作系统的API,多媒体应用、SDL和操作系统的层次结构可以用图2来表示。 SDL包括八个子系统,分别是声音、CDROM、事件处理、文件I/O、游戏杆操作、多线程、定时器和视频。编写视频播放插件主要用到音频视频系统、事件处理系统、多线程系统等。音频视频系统提供向音频视频设备传送数据的接口,实现音频视频播放;时间处理系统用来响应用户的鼠标、键盘等操作,实现播放控制;多线程系统用来处理多个线程并发工作。 2.2 录像录像录像录像视频帧的读取 由SDL创建两个线程,音频线程和视频线程,这两个线程分别从音频队列和视频队列中读取解码后的音频帧和视频帧,并且判断每帧应在何时播放,按照相应的播放时序把音频帧视频帧送到播放设备,最终将声音和图像播放出。 另外,在播放模块中,通过SDL的事件处理系统,实现暂停、停止、快进和快退等播放控制功能。 3 atl实现的非测距风速 本系统在Visual Studio集成开发环境下基于ATL(Active X Template Library)开发Active X插件。因为ATL采用了特定的基本实现技术,摆脱了大量冗余代码,使用ATL开发出的COM应用的代码简练高效。ATL产生的代码在运行时不需要依赖于类似MFC程序所需要的庞大的代码模块,包含在最终模块中的功能是用户最基本和最必须的。这些措施使采用ATL开发的COM组件

文档评论(0)

1亿VIP精品文档

相关文档