1、关键词:多媒体信息处理;压缩;音视频编码近年来,随着计算机和通信技术的飞速发展,人们对信息的需求不再满足于简单的文字和声音,而是逐步转向了多媒体领域。以音视频为主的数字媒体已经成为人们获取信息的主要来源1。但是因为数字视频的数据量巨大的特点,导致未经压缩的数字媒体信息对通信系统中有限的存储空间和带宽提出了严峻的挑战。另一方面,人们对媒体信息的需求不再是单一目标的,而是逐步向多目标发展,即在同一时间可能需要实时获取来自多个媒体的信息,同时人们也希望对多媒体信息做分析和一些相应处理。对此,在技术上不仅需要对信息进行压缩,还需要对信息进行多路的采集以及对音视频的分析和处理。基于以上背景,立足于开发一
2、套采集数字媒体信息采集和处理的平台以实现对数字媒体信息的实时采集、压缩以及分析处理,开设了该课题以完成平台的基本搭建工作,完成其中信息压缩与采集、网络通信及多媒体信息处理等功能1。该系统为后续工作中音视频分析模块的加入搭建了平台,对多媒体信息处理与智能信息处理技术与方法的进一步研究,数据压缩与编码方法研究,基于内容的信息管理与使用方法研究,以及分布式信息处理系统软件设计与研究有着重要意义。1 系统设计与算法分析1.1 需求分析与系统总体设计根据课题所在项目的要求,需要开发一套能够对多媒体数字信息进行多路实时采集,并能够进行分析和处理的平台。通过该平台可以对多媒体数字信息进行多路实时采集,并可以
3、在信息采集过程中能够对音视频信息进行压缩编码。编码后的多媒体信息能够传输到计算机并以文件形式存储,并能够通过系统对采集的文件做相应的分析和处理,包括语音识别、情感分析以及视频剪辑处理等。其中视频剪辑部分要实现通过语音识别得到的字幕关联剪辑的功能,即通过选取一段字幕信息实现对应视频段的提取。同时系统还需要支持剪辑结果预览、字幕跟踪播放和查看所提取视频关键帧等功能。基于以上需求分析,可以将数字媒体信息采集与处理软件在功能上分为四个部分,如图1.1所示。第一部分是音视频采集与编码模块,负责多媒体信息采集和压缩编码以方便传输和后续处理。经过对各种编码标准优缺点的分析,为达到更好的编码效果和网络友善性,
4、本文采用MP3和H.264标准分别对音视频进行编码,并在以DM642 DSP芯片为核心的信息采集板上通过嵌入式技术实现。图1.1 系统结构图第二部分是多媒体信息处理子系统,负责实现视频关联剪辑、预览和字幕跟踪播放等功能。子系统位于PC机,利用MFC框架在VC+6.0环境下实现。另两部分分别为语音识别和情感分析模块,分别负责识别视频的语音并自动生成字幕,以及通过语调分析视频情感,形成情感分析图。这两部分将在将来的工作中加入到本课题搭建的平台中,故本文不做过多说明2。考虑到模块之间需要相互交换数据,因此系统加入了网络通信模块进行连接。该模块位于采集板与PC机之间,由采集板发送信息,并由PC机进行接
5、收。1.2 音视频编码模块设计该模块主要实现音视频的采集和编码功能。当得到输入的音频流和视频流后,模块分别取出等时间长度音视频数据进行编码。对音频数据利用MP3编码器进行压缩编码,并对视频数据通过调用H.264编码函数库进行压缩编码。最后将经过编码的数据存入数据包,准备由网络通信模块发送给PC机。音视频的采集与编码均需要以帧为单位进行。由于每帧视频数据的时长为40ms,因此模块需要在该时间内完成音视频编码和发送数据包的工作,否则会产生丢帧现象。在对MP3编码器进行移植和优化的前提下,本文对音频和视频的编码采用串行设计,如图1.2所示。模块首先对视频编码的参数进行初始化,然后分别采集相同个数的音
6、频和视频数据,之后先对音频数据进行MP3编码,在对视频数据进行编码,将二者编码后的结果写入数据包,最后将其发送。数据包的数据结构数组格式如图1.3所示,数组头部用4Byte标明了音频和视频压缩后的长度,后面依次是编码后的音视频主数据。数组信息写完之后便由网络通信函数向指定IP发送数据包,完成传输工作。图1.2 音视频编码流程图音频数据长度视频数据长度音频数据视频数据图1.3 数据包结构图1.3 多媒体信息处理子系统设计根据子系统的操作流程,以下将其分为三个部分进行设计,分别为字幕文本框模块、提取信息列表模块和关键帧提取模块。1.3.1 字幕文本框模块设计本模块采用链表数据结构,以方便数据的增加
7、和删除操作。语音识别所生成的字幕文件格式为:“文字 开始时间 结束时间 识别得分”,根据格式对每个文字信息进行截取并存入结构体链表中。如图1.4所示,这样就可以通过对链表的查询来定位字幕中文字位置,从而定位其再文本框中的位置,将其置为选中状态,实现字幕的跟踪效果。当进行提取操作时,需要捕获鼠标选取字幕信息的起止时间。通过调用ffmpeg,将视频对应的该时间段提取出来,作为临时文件保存起来。图1.4 文字链表结构图1.3.2 提取信息列表模块设计该模块功能的设计思想是在字幕文本框中每提取一个视频段,就会把该视频段的信息存储起来,并显示在列表中。由于选取的若干视频段会经常进行增加、删除和变换位置等
8、操作,所以存储的数据结构仍然为链表。当选中一条记录时,在链表中找到该条记录并获取其起止时间,通过起止时间查找文字链表,确定文字在链表和文本框中的位置,并将其置为选中状态。当要对记录预览时,捕获双击记录信息,找到被双击记录在链表中对应的节点,读取该记录的临时文件,控制预览窗口播放。模块仍然采用链表数据结构实现,与文字链表相似,将生成的关键帧(即通过ffmpeg提取视频段中的I帧)的文件名、时间存入结构体链表,通过查询链表来确定所选择关键帧的时间,来进行播放跳转和提取操作。1.4 网络通信模块设计为了提供可靠的数据传输和连接服务,该模块采用TCP传输控制协议。TCP协议下的通信活动图如图1.5所示
9、,每个采集板有自己的IP地址和端口号,对应采集某个频道的信息。在采集板上通过建立网络套接字并与本地端口绑定,同时设置好采集板的IP,来完成网络通信模块发送端的配置。在接收端首先要选择接收哪一个采集板发来的信息,在客户端设置要接收采集板的IP和端口号。首先发送端和接收端分别建立Socket套接字,并且在发送端进行监听的设置。当监听到接收端发来的连接和接受请求时,发送端与其建立连接并开始传送数据包。由于要同时采集多个采集板的信息,所以接收端采用了多线程技术为每一个接受任务创建独立的线程。当接收信息时,各线程同步交替接收采集板数据,从而达到多路实时采集的目的。图1.5 TCP协议通信活动图2 系统实
10、现与测试2.1 音频压缩编码模块的实现2.1.1 MP3编码器的移植本文将运行在VC环境下的MP3编码器代码移植到DM642 DSP开发平台上,实现对音频的实时编码功能。主要进行的工作有以下几个步骤:首先是头文件与库文件的修改DSP开发所用的开发环境为CCS,面对不同的硬件,其支持库与VC环境不尽相同。所以需要对VC下的MP3编码器的库文件和所包含头文件做相应的修改,使其适应CCS开发环境3。其次是数据类型的修改CCS与VC下的变量数据类型是不完全相同的,例如部分数据类型VC下存在,但CCS下却未必有定义。因此根据实际情况,需要对源码中的数据类型做相应的修改,才能使之适应目标平台。第三是对存储
11、空间的合理分配存储空间的不合理分配,在VC下仅体现为程序运行缓慢,有时几乎不会被察觉。而在DSP平台上,由于资源空间有限,存储空间分配不合理将可能直接导致程序无法运行。为此需要对源程序的存储空间的分配进行优化,以确保程序能够在DSP上成功运行4。最后是音频输入途径的修改VC上的MP3编码器的音频输入,是获取位于计算机上指定路径下的WAV文件。将编码器移植到DSP平台后,需要对其输入的途径进行修改,将原来的文件获取改为音频信号的实时获取方式。2.1.2 MP3编码器的优化从处理的实时性考虑,移植后的MP3编码器还不够完善。因此为了达到能够让采集板实时采集并处理音频信号的目的,必须提高代码运行速度
12、,对代码进行整体的优化。首先要进行冗余代码的消除。MP3编码器的原始代码中包含了很多冗余代码,包括一些断言、输出信息等,它们在实际运行程序时没有必要保留,因此本文将其删除。其次是循环展开。循环展开是软件流水的一个执行办法,通过该办法可以加大代码的并行程度,从而提高运行效率。DM642共有8个功能单元能够同时执行8条指令,为了充分利用它的字长和运算能力,本文对所有可数循环进行了展开处理。同时本文对关键代码利用线性汇编语言进行了优化,使代码运行速度有了明显提高5。经过线性汇编优化的代码进行测试的结果表明,处理1000000次乘法的时间由原来的20s降低为6s,即平均每次乘法的时间由20s降低为6s
13、,计算速度得到明显提升。2.2 视频编码模块的实现该模块要通过H.264标准,实现对视频信号的实时采集和压缩6。H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:帧间和帧内预测、变换和反变换、量化和反量化、环路滤波、熵编码。H.264编码模块通过调用YTH264Encoder.lib库文件实现了对存放在动态随机存储器(SDRAM)中的视频数据进行压缩编码。本文对视频编码主要进行采集视频数据、创建视频编码器、对单帧图像编码和删除编码器等操作6。2.3 多媒体信息处理子系统的实现该子系统在VC+6.0环境下利用MFC实现,通过定义各个控件和操作的触发函数,实现了功能
14、的相应。主要包括 CProtestApp类、CMyDlg类、MyLBDown类、MyNetDlg类,各个类之间的关系如图2.1所示,各类的功能介绍如下:1、CProtestApp类应用程序主线程,负责对主对话框进行初始化。2、CMyDlg类继承自CDialog,是生成视频处理对话框的类,负责显示视频处理窗口,并定义对话框中的文本框、列表框、视频播放器、按钮等控件,以及初始化控件。3、MyLBDown类由于文本框控件无法响应单击事件,因此本文选择自定义派生类的方法,对其定义单击事件响应函数。该类派生自CEdit,是响应文本框内单击事件的函数。4、MyNetDlg类对话框生成类,用来生成网络通信模块的IP和端口的配置界面,包括IP地址框和文本框以及一些按钮和列表控件的定义和初始化。并且该类定义了网络通信中接受端的接受函数和线程函数,用来接受数据包并进行分离和存储。图2.1 多媒体处理子系统总体类图2.4 网络通信模块的实现2.4.1 采集板发送端的实现采集板在对采集到的音视频信号进行压缩编码之后,通过该模块将采集板采集的模拟信号数字化,并通过发送端将数据信号读入PC机,同时将得到
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1