徐航,孙书韬
(中国传媒大学 计算机学院,北京 100024)
广播音频编辑器的底层数据结构与效率
徐航,孙书韬
(中国传媒大学 计算机学院,北京 100024)
摘要:本文系统地介绍了广播音频编辑器的传统底层数据结构,包括各部分之间的相互关联关系,以及在使用底层数据结构的基础上,着重研究编辑器在时间和空间上的使用效率问题。提出了一种新的底层数据结构来支持广播音频编辑器的使用,实验表明,该数据结构能节省时间和磁盘空间,具有易于应用和效率高的优点,能有效地提高广播音频编辑器的使用效率。
关键词:广播音频;编辑;数据结构;效率
中图分类号:TP311.1
文献标识码::A
文章编号::1673-4793(2015)01-0038-07
Abstract:This paper systematically introduces the traditional-bottom data structure of broadcasting audio editor,including the relations between the various parts,and study the efficiency of time and space usage of the broadcasting audio editor. Design a new kind of bottom data structure to support the usage of broadcasting audio editor. By doing experiment,it shows the new data structure can save time and disk space,and have the advantages of easy-applied and high efficiency. It can effectively improve the efficiency of broadcast audio editor usage.
Keywords:broadcasting audio;edit;data structure;efficiency
收稿日期:2014-12-29
作者简介:徐航(1987-),男(汉族),广西桂林人,中国传媒大学计算机学院研究生.E-mail:xuhang2012@126.com
The Bottom Data Structure and Efficiency
of Broadcasting Audio Editor
XU Hang,SUN Shu-tao
( School of Computer Science,Communication University of China,Beijing 100024)
1引言
数字技术的出现与应用为人类带来了深远的影响,人们如今已生活在一个几乎数字化的世界中,而数字音频技术则称得上是应用最为广泛的数字技术之一[1]。在当今时代,广播音频依旧在媒介传播中占据着重要地位,随着近几年数字化技术和网络化技术的普及,广播音频处理技术也变得越来越成熟。在广播音频处理的相关技术中,音频编辑制作软件与主机、音频接口卡组成了数字音频工作站[2-3],人们常常高频率地使用广播音频编辑制作软件也就是广播音频编辑器,其准确性和效率直接决定了用户的体验,现代音频编辑制作软件的特点有集声音、音效等工作于一个环境之中,不需要像传统的节目制作那样有多道复杂工序,轻轻松松就完成了常规剪辑、播放、淡入淡出、高品质音效编辑与合成等[4]。代表性的产品有:美国Adobe System公司的Adobe Audition,德国SEK’D公司(现已经被Magix公司收购)的Samplitude Professional,德国SteinBerg公司的Nuendo等优秀的音频编辑软件。这些音频编辑软件的功能强大,具有很好的音频录制和处理功能[5]。高效的广播音频编辑器往往能够节省大量的人力和物力,而底层数据结构直接决定了其稳定性和在时间和空间上的消耗,因此对底层数据结构进行研究,并提出改进方法,从而提高时间和空间效率是必要的。
2传统底层数据结构设计与不足
本文研究的广播音频编辑器的底层数据结构主要是由音轨类(WaveTrack)、音频波形块类(WaveClip)、序列类(Sequence)组成。
音轨包含三种:波形轨、标签轨、相位相关轨,其中波形轨是最主要的。各种音轨定义如下:
①波形轨(WaveTrack):包含波形幅度、时间信息、采样率、量化比特等波形信息的轨道。其分为单声轨和立体声轨。一个立体声轨可以分为两个单声轨,从一个立体声轨分离的两个单声轨也可合并为立体声轨,即这个转换是可逆的。
②标签轨(LabelTrack):包含一些时间上的标识信息的轨道。主要是对一些特殊的时间点标识,并能够快速定位标签轨的标识点。
③相位相关轨(PhaseCorrTrack):实时显示该波形轨的相位相关系数显示。相位相关系数的范围为(-1~1),一方面用在检测节目是单声道节目,还是立体声节目;另一方面用来检测混音后,节目的相位相关信息,及一些反相的警告。
音频波形块指的是放置在各个音轨上的音频文件,模拟音频经过采样、量化和编码后所形成的二进制序列就是数字音频信号,我们可以将其以文件的形式保存在计算机的存储设备中,这样的文件通常称之为数字音频文件[6],在数字音频文件的格式中,Wave是Microsoft Windows本身提供的音频格式,由于Windows本身的影响力,这个格式已经成为了事实上的通用音频格式[7-8]。
在音轨上它是音频波形[9],用于直观显示音频文件的数据。
序列类用于管理音频波形块在磁盘中对应的一些基础数据文件。
这三者相互之间的关系,可用图1表示。
通常我们所使用到的音轨都是波形轨,每个波形轨上放置了若干个波形块如图2所示。
图1 传统底层数据结构设计示意图
图2波形轨与波形块关系示意图
每个单声道音频只有一个WaveTrack,而每个立体声音频则有两个WaveTrack。
每个波形块都有一个Sequence类的成员变量mSequence,波形块通过这个成员变量对自己在磁盘上的相应数据进行管理。
在Sequence类中有一个SeqBlock类型的成员变量,它用于标识磁盘中Sequence类内包含的基础数据文件,数据结构如下:
struct SeqBlock
{
BlockFile * f;
sampleCount start;
};
该数据结构包含两个属性,其中f为指向磁盘中基础数据文件的指针,这里的基础数据文件指的是au格式的文件,Audio文件是Sun Microsystems公司推出的一种经过压缩的数字声音格式,是Internet中常用的声音文件格式,au文件是UNIX操作系统下的数字声音文件,由于早期Internet上的WEB服务器主要是基于UNIX操作系统的,所以这种文件成为WWW上唯一使用的标准声音文件[10];start为SeqBlock在Sequence类中对应的采样点开始位置。而Sequence类还存在着一个名为mBlock的BlockArray类型成员变量,它是一个数组,用于管理各个SeqBlock,一般单个Sequence类中存在一个或一个以上的SeqBlock,每个SeqBlock都指向磁盘中的一个基础数据文件。传统底层数据结构设计采用将左右声道数据分开存储的形式,如果需要存储的是立体声数据的话,每个基础数据文件只存储左声道或者是右声道的相关数据,这样使得基础数据文件的个数比较多。
在基础数据文件中,同时包含了基础数据和波形显示数据,单个基础数据文件(au文件)的结构如图3所示。
图3 单个基础数据文件结构图
其中AuHeader的数据格式为:
struct AuHeader
{
wxUint32 magic;
wxUint32 dataOffset;
wxUint32 dataSize;
wxUint32 encoding;
wxUint32 sampleRate;
wxUint32 channels;
};
该数据结构包含六个属性,大小均为4字节,magic的值为0x2e736e64(.snd),规定了写入数据时的字节顺序;dataOffset记录了数据段data在文件中的起始位置;dataSize记录了数据段data的大小;encoding记录量化精度;sampleRate记录量化精度;channels记录了基础文件的数据段包含了多少个声道的数据,在传统数据结构下,因为每个基础数据文件只记录一个声道的数据,所以值均为1。
SummaryInfoHeader的数据格式为:
struct SummaryInfoHeader
{
int fields;
sampleFormat format;
int bytesPerFrame;
sampleCount frames64K;
int offset64K;
sampleCount frames256;
int offset256;
int totalSummaryBytes;
};
该数据结构包含八个属性,由于SummaryInfo中记录值为最小值Min、最大值Max、均方根值RMS,所以fields值为3;format为采样类型;bytesPerFrame每一帧的所占字节数;frames64K记录64K 级别SummaryInfo的个数;offset64K记录了64K级别SummaryInfo信息起始位置在SummaryInfo部分中的偏移量;frames256记录256 级别SummaryInfo的个数;offset256记录了256级别SummaryInfo信息起始位置在SummaryInfo部分中的偏移量。
256级别SummaryInfo是直接取每256个采样点计算他们的最小值、最大值和均方根值。256级别SummaryInfo信息块的个数最多为256个,因为在程序中限制了每个基础数据文件数据部分的采样点个数为65536,即64K。
64K级别SummaryInfo是取每256个256级别SummaryInfo的计算结果进行计算得出的最小值、最大值和均方根值。
这些SummaryInfo信息是生成au文件的时候通过音频的数据data计算出来的。
进行波形显示时,需要读取波形显示部分也就是SummaryInfo部分的数据,这样造成较大的文件反复被载入内存。并且只有在基础数据文件存在的前提下,才能进行波形显示,所以在不存在基础数据文件的时候,每次都必须进行解码形成基础数据文件的操作。
广播音频编辑器在使用传统底层数据结构的前提下,能够完成对音频素材的导入、播放、编辑等工作,但是传统的底层数据结构仍存在着不少缺点。
首先,基础数据和波形显示数据集中在同一个文件中,使得我们如果要利用波形显示数据来显示波形块的话,必须对素材文件进行解码以生成波形显示数据,造成了很大的时间消耗,尤其是当素材文件的大小较大时,这样的时间消耗显得更加明显。
其次,在每个Sequence类中一般对应存在多个SeqBlock,每个BlockFile对应的是1个基础数据文件,这样就往往在临时文件夹中形成了数量较多的基础数据文件,并且这些基础数据文件的名称是随机生成的,不具有规律性,素材的名称不能对应到基础数据文件的名称中,造成文件管理的复杂,不能实现素材的可视化编辑。
最后,每次将素材导入时都会形成新的基础数据文件,当类似的素材导入操作次数增多时,会产生越来越多的基础数据文件,并且在进行删除、复制这样的编辑操作时同样会产生新的基础数据文件。这样虽然能实现文件管理,但是会造成磁盘空间不必要的消耗。尤其是素材文件较大,且必须对素材文件进行多次导入操作以及删除、复制此类的编辑操作时,这样的磁盘空间消耗会更加明显,会造成生成的临时文件夹过大。
3支持高效显示的新底层数据结构设计
广播音频编辑器需要具有高效率的特点,因此针对这些特点,在保留原有大部分框架结构的基础上,可设计新的底层数据结构。
首先,在对素材文件的波形显示方面采取解码所得基础数据和波形显示数据分离,分别形成单独文件的形式,解码所得数据仍为.au格式文件,波形显示数据为.si格式文件。这样使得我们将来可以采用从广播电台的媒资库中读取素材文件相对应波形显示文件的方法,在不必每次都对素材文件解码的情况下完成波形显示,大大节省了时间。
其次,改变Sequence层的管理机制,将其下每个成员变量SeqBlock的指向由单个小au文件数据的整体转变为指向单个较大au文件数据的一部分。SeqBlock新的数据结构定义如下:
struct SeqBlock
{
BlockFile * f;
sampleCount start;
wxFileName siName;
sampleCount FileOffset;
sampleCount Len;
};
该数据结构包含五个属性,其中,f为指向磁盘中基础数据文件的指针,start为SeqBlock在Sequence中对应的采样点开始位置,siName为对应si文件的名称,FileOffset为对应在au文件中的偏移位置,单位是采样点,Len为该SeqBlock的数据段对应在au文件中的长度,单位也是采样点。
再次,改变基础数据文件的组织结构形式,用于支持系统中的素材管理和编辑操作,将每个素材文件解码所得的基础数据文件数量设计为单个且名称与素材文件名称相同,实现了素材名称与基础数据文件的名称一一对应,利于素材文件的可视化编辑,不沿用原有的左右声道数据分别产生au文件的形式,而是采用左右声道数据交织的方式存储音频数据,通过追加的形式在基础数据文件尾部添加音频数据,最终只形成单个基础数据文件。
在基础数据文件中,只包含基础数据,单个基础数据文件(au文件)的结构如图4所示。
图4 单个基础数据文件结构图
其中AuHeader的数据格式保持不变,如果需要存储的是单声道数据,则数据部分存储方式与原来相同;如果需要存储的是立体声数据的话,则数据部分改变为 左右声道数据交织存储,即先存储左声道数据,再存储右声道数据,依次存储下去直至存储完毕。data部分的数据存储形式如图5所示。
图5 新机制下数据部分存储形式
如果需要读取data部分数据的话,需要考虑间隔的排列形式。
SummaryInfo文件的排列形式如图6所示。
图6 SummaryInfo文件存储形式
由于SummaryInfo是单独文件的形式,所以并不需要像原有的底层数据结构下那样规定256级别SummaryInfo数据的最大个数为256,如果超过256则可以在下一块SummaryInfo数据块中存储相关信息。当对应的素材文件为双声道文件时,SummaryInfo的排列顺序也为左声道数据块和右声道的数据块间隔排列。
最后,在改变了基础数据文件组织结构形式的基础上,重新设计广播音频编辑器中播放机制和删除、复制、粘贴等编辑操作的机制,利用SeqBlock变量中的成员变量FileOffset、Len使得对波形块的编辑操作通过设置这些变量的值就可以实现,而不必产生新的基础数据文件,消耗磁盘空间。
新的底层数据结构如图7所示。
图7 新底层数据结构设计示意图
在保留广播音频编辑器操作界面框架的基础上,重新设计的新底层数据结构优点主要有:
(1)在基本保留操作界面的基础上完成了底层重新设计,保留用户操作习惯,使得用户易于适应和学习使用。
(2)将素材文件解码后形成的基础数据和波形显示数据分离为各自独立的文件,使得可以利用广播电台中媒资库的海量媒体资源,做到显示波形时可以先只读取素材文件对应的波形显示文件(si文件),将音频的解码操作延迟到用户对音频文件的修改完成之后需要保存时再解码,这样就能使得时间的消耗大为减少。
(3)一个素材文件只形成单个基础数据文件,由于省去了多个基础数据文件的文件头所占空间,而只是把数据集中存储在单个基础数据文件中,这样就节省了一部分磁盘空间。基础数据文件与素材文件的名称相同,实现了素材文件的可视化编辑,所见即所得。
(4)对素材文件的波形块进行删除等编辑操作时,不会产生新的基础数据文件,减少了磁盘空间的消耗。
4数据测试
为了验证新的底层数据结构相比传统底层数据机构在时间和空间上使用效率的提高,我们进行了测试。使用的是标准格式化的WAV文件进行测试,采样率为常用音频的采样率44100Hz,音频大小分别为1M、5M、10M、20M、30M、40M。
首先进行的是对音频文件波形块的删除操作,对同一音频文件,在两种底层数据结构下同样地删除后一半的音频文件波形块,所消耗时间的对比如下表:
表1 删除操作时间对比表
其中,操作时间为从进行删除操作开始,到删除操作结束为止所消耗的时间,原操作时间为在传统底层数据结构下消耗的操作时间,新操作时间为在新的底层数据结构下消耗的操作时间。
由表1可以看出,在使用了新底层数据结构的前提下,删除操作所消耗的时间大大降低,由于在广播音频编辑器中,需要频繁对波形块进行删除、复制等操作,所以新的底层数据结构能大大提高编辑器的时间使用效率。
然后比较在进行前面的删除操作之后,在两种底层数据结构下分别所占用磁盘空间的对比如下表:
表2 消耗磁盘空间对比表
占用磁盘空间为临时文件夹中所有文件所占的空间,原占用磁盘空间为在传统底层数据结构下占用的磁盘空间,新占用磁盘空间为在新的底层数据结构下占用的磁盘空间。
由表2可以看出,在使用了新底层数据结构的前提下,进行上述删除操作所产生的临时文件夹中文件占用的磁盘空间与原底层数据结构下进行同样操作占用的磁盘空间相比较小,考虑到在广播音频编辑器中,主要进行的操作就是一些编辑方面的操作,在传统底层数据结构下,临时文件夹中的文件会不断地增加,这样产生的文件数量是非常多的,并且会占用越来越多的磁盘空间,而在新的底层数据结构下,进行编辑操作并不会产生新的文件,临时文件占用的磁盘空间会保持不变,这样能节省下非常多的磁盘空间,所以新的底层数据结构能有助于提高编辑器的空间使用效率。
5总结
本文系统阐述了广播音频编辑器的底层数据结构原理,并设计了一种新的底层数据结构用于提高广播音频编辑器的时间和空间效率。实验证明,该方法可行性高,效果明显,但同时也存在一些问题,例如导入解码的过程的速率方面仍有待提高。波形显示文件和素材文件的对应关系需要进一步完善,还需要进一步的研究和改进。
完善后的新底层数据结构将可以在广播电视机构中提高数字音频技术的品质与性能,使数字音频技术在广播电视领域的运用更加优秀。这样就不仅可以提高自身电视节目音频方面的质量,也能够大力地推动整个国内广播电视行业的进步与发展[11]。
参考文献:
[1]李树春. 广播音频编辑与制作软件的设计与实现[D].成都:电子科技大学,2009,5.
[2]江荣会,白新跃,唐继勇. 新一代数字音频工作站.有线电视技术[J],2008,(10):94-95.
[3]卢官明,宗昉.数字音频原理及应用[M].北京:机械工业出版社,2005.
[4]王卫华,孔娟.非线性编辑系统的实现及其网络化[J].安阳大学学报,2004,(4):41-42.
[5]彭晓林.音频编辑软件Cool Edit Pro简介[J].音响技术,2000,(3):20-24.
[6]韩宪柱.数字音频技术及应用[M].北京:中国广播电视出版社,2003,5-6.
[7]孙美宗.浅谈常见的数字音频文件格式[J].电声技术,2003,(3):33-34.
[8]杨俊,蔡宜平,颜飞翔.数字音频技术及其应用与发展(一)[J].电声技术,2001,(5):7-9.
[9]黄江. 音频编辑与音效的设计与实现[D].北京:中国传媒大学,2013,5.
[10]赵永健.数字音频文件格式及其相互转换[J].电声技术,2003,(7):58-61.
[11]寿蒋丽. 广播电视领域中数字音频技术的应用[J].电子制作,2014,(4):195.
(责任编辑:宋金宝)