OGG

转自百度
Ogg全称应该是OGGVobis(oggVorbis)是一种新的 音频 压缩格式,类似于MP3等的 音乐格式。Ogg是完全 免费、开放和没有 专利限制的。OggVorbis 文件的扩展名是".ogg"。Ogg 文件格式可以不断地进行大小和 音质的改良,而不影响旧有的 编码器播放器

1简介编辑

Ogg全称应该是OGG Vorbis, 是一种新的 音频 压缩格式,类似于MP3等的 音乐格式。但有一点不同的是,它是完全 免费、开放和没有 专利限制的。OGG Vorbis有一个特点是支持多声道,随着它的流行,以后用随身听来听DTS 编码的多声道作品将不会是梦想。
OGG格式音频图

OGG格式音频图

Vorbis是这种 音频压缩机制的名字,而Ogg则是一个计划的名字,该计划意图设计一个完全开放性的 多媒体系统。
Ogg Vorbis 文件的扩展名是.OGG。这种文件的设计 格式是非常先进的。创建的OGG 文件可以在未来的任何 播放器上播放,因此,这种 文件 格式可以不断地进行大小和 音质的改良,而不影响旧有的 编码器或播放器。

2优点和制作编辑

一、优点
MP3是有损压缩格式,因此压缩后的 数据与标准的CD 音乐相比是有损失的。VORBIS也是 有损压缩,但通过使用更加先进的 声学模型去减少损失,因此,同样位 速率(Bit Rate) 编码的OGG与MP3相比听起来更好一些。另外,还有一个原因, MP3格式是受 专利保护的。如果你想使用MP3 格式发布自己的作品,则需要付给Fraunhofer(发明MP3的公司) 专利使用费。而VORBIS就完全没有这个问题。对于乐迷来说,使用OGG 文件的显著好处是可以用更小的文件获得优越的 声音质量。而且,由于OGG是完全开放和 免费的,制作OGG 文件将不受任何 专利限制,可望可以获得大量的 编码器播放器。这也是为何MP3 编码器如此少而且大多是 商业软件的原因,因为Fraunhofer要收取 专利使用费。
优点1:Ogg Vorbis的 音质和MP3不相上下
由于Vorbis 使用了与MP3相比完全不同的数学原理,因此在压缩 音乐时受到的 挑战也不同。在 聆听测试中,同样位 速率 编码的Vorbis 和MP3 文件具有同等的声 音质量。
如果两个 文件都是以同样的位 速率和CBR(常量位速率,指文件从头到尾都是一种位速率)方式来 编码的话,那他们的大小肯定相同。当前 Vorbis 是以VBR(可
OGG的商标

OGG的商标

变位 速率)方式 编码的,这使得Ogg的 文件可以更小,因为VBR方式可以处理能大幅度进行压缩的 音频 数据(比如无声的时段)而节省 空间
优点2:Ogg Vorbis支持类似于MP3的ID3 信息
Vorbis 格式中包括有一个灵活而又完整的注释栏,可用于填写各种相关 信息
优点3:Ogg Vorbis 格式支持流式播放
音频流是Vorbis的一个重要组成部分.vorbis 格式从设计的一开始就是立足于可以容易地进行流式处理。并且,Vorbis的设计者正与Icecast 流媒体软件的创造者一起使Icecast兼容Vorbis。
优点4:Ogg Vorbis避免了像MP3 文件的ID3 标记那样烦琐的操作
Vorbis具有一个设计良好、灵活的注释,避免了像MP3 文件ID3标记那样烦琐的操作;Vorbis还具有位 速率缩放:可以不用重新 编码便可调节文件的位速率。Vorbis 文件可以被分成小块并以 样本粒度进行 编辑;Vorbis支持多通道; Vorbis文件可以以 逻辑方式相连接等。
二、制作OGG 音乐格式 文件
OGG 格式音乐 文件没有大模规普及之前,一般需要利用 CD唱片或网上下载的其它格式制作。下面介绍几种的制作OGG 格式的方法:
转换OGG 格式的方法有很多,但最简单的方法是就是用 Foobar2000+OGGENC外部 编码器。Foobar2000现在很流行,它是一个Windows 平台下的高级 音频 播放器。不仅 音质很出色,功能也很强大。Foobar2000支持 WAVAIFFVOCAUSND、Ogg Vorbis、 MPCMP2、MP3等 音乐格式,通过 插件还能支持 MPEG-4AACFLAC、Ogg、 FLAC、MonkeysAudio、 WavPackSpeexCDDASPC及各种 MOD类型,支持的类型是已经足够了。利用Foobar2000的转换功能,可以方便的其它的 音频格式制作成OGG格式。
比如在 foobar2000中用鼠标选中要转换的歌曲,右键点击,选中“ 转换”,然后选择“转换到同目录”,这样就不用找转换出来的歌了。FOOBAR会弹出个“转换器设置”,在“ 编码预置”里选择“Ogg Vorbis”。FOOBAR默认的是Q5。可以点击“。。。”,然后在
OGG

OGG

“命令行 编码器设置”将 品质拉到最右边即是最高品质Q10了。设置好后,点击“确定”开始转换。如果没有设置好OGG 编码器的位置,FOOBAR会弹出提示叫你选择OGG编码器的位置。
在千千静听中,把想转的歌曲加入到 千千静听,在 歌曲上右键点转换 格式--输出格式中选 命令编码器1.0,点击“配置“--新建1个编码器 方案,名称任意--把编码 程序改为刚才下载的那个ogg编码器--扩展名为ogg,命令 参数为:-q10--o %d,其余默认--确认后点击“立即转换”。不是Q10的话把“10”改成对应的 数字即可。用Easy CD-DA Extractor9转起来更方便,但是选择第三方 编码器时不方便用户。
MP3播放器都增加了对OGG 格式支持,比如说魅族的 MINIPLAYER(支持OGG/Q-1~Q10)。如果选购的是小容量版本,建议使用Q2和Q4品质的OGG。Q2品质的歌曲 文件音质水平全面超过了128KBPS码率的MP3,而文件 体积却还要小1/4以上,无疑是音质和体积的很好结合,适合绝大多数普通用户。事实上即使Q0品质的 音质就超过了同样采用64Kbps 码率的WMA 格式,非常接近128KBPS码率的MP3,而64k的wma的音质根本无法达到128Kbps码率mp3的水平。如果不是很挑剔音质的 用户用Q0品质也完全没有任何问题。
HTML 5 视频格式
ogg是HTML新技术所使用的视频 格式之一。

3编码编辑

特点和原理

多通道编码技术,统称为 立体声通道耦合StereoChannelCoupling。据官方声称,与其他会造成立体空间感减弱的 编码 模型相比,这两种技术都可以在保持 编码器的灵活性的同时而不损害本来的 立体声空间 影像--相信配合 iRiver3d音效会有更好的表现力,而且实现的复杂程度比联合立体声方式要低。 Ogg的 编码中的比特率选项主要有 ABRVBR和Quality三种,Ogg的比特率是可变的,推荐使用设置简单Quality模式,能满足大多数人要求。

优势与前景

优势一:不断改良与完善的升级 概念。由于采用了向前适应算法结构(forwardadaptivealgorithmformat),其 文件 格式已经固定下来后还能对 音质进行明显的调节,所以创建的OGG文件可以在任何 播放器上播放,并且不断地进行大小和音质的改良,同时也不影响旧有的 编码器或播放器。
优势二:支持 多声道。OggVorbis可以在相关软件的支持下对所有的 声道进行 编码,而不像MP3只能编码2个声道。而多声道 音乐的兴起,给音乐欣赏带来了革命性的变化,尤其在欣赏 交响乐时,会带来更多临场感。
优势三: 音质上在低 比特率下有很好的表现力。在保持优秀 音质的同时又无形中提高了 播放器的容量。
优势四:OggVorbis 格式完全 免费开放源码且没有 专利限制。没有人会拒绝 免费而优秀的 产品,而对于流行的 mp3格式,正式的mp3 播放器生产商每年都要向 德国FraunhoferInstitution及ThomsonMultimeda缴纳一笔使用权利金,而这笔使用权利金mp3是向 消费者收取的。

4文件结构编辑

Ogg 文件 格式封装好压缩 编码 媒体流可用于存储( 磁盘文件)或直接传输( TCP或管道),这是因为Ogg比特流格式提供了封装/同步、差错同步 捕获、寻找 标记以及其它足够的 信息使得这种分散开的 数据能够完全地还原为封装之前的具有包边界“packet”形式的压缩编码媒体流,恢复到这种原来媒体流就具有的包边界形式不需要依赖于针对压缩编码的解码器。也就是说Ogg 映射与逆映射和媒体流的压缩 编码、解码具有相对独立性。
映射到Ogg 格式的媒体(如vorbis 音频,Theora 视频)有相关详细定义,这些定义使得这些媒体之间有更具体的约束关系。Ogg本身并没详细说明多个并发媒体流之间的时间关系,这需要并发媒体流在映射到Ogg 格式的时刻来指定,通常他们之间的交错关系是按他们产生的时间先后顺序来排列。

封装

Ogg 文件需要解封装的情况有两种:(1) 播放器要对媒体流解码之前;(2)对媒体流进行RTP/UDP传输之前。解封装的过程就是ogg逆映射过程,即还原为具有包边界“packet”形式的媒体流,同时以预先填充好了的RTP首部字段与相应一段媒体 数据捆绑,形成RTP 封包。此过程便是媒体流从Ogg 格式到RTP格式的转换过程。
将以packet为单元的媒体流映射为以page为 单元的Ogg 格式比特流,其中间经过了 segment的划分和重组环节,但方便了对媒体流的存储与传输(TCP)。对源 缓冲区媒体 数据(packet)的操作,需建立几个中间环节的 数据结构,只需将切割的媒体数据在 内存移动一次,操作指向媒体数据的 指针便能达到媒体 数据迁移目的缓冲区(page)的意图,其过程可用两个函数转换来表述。
Ogg 文件结构

Ogg 文件结构

:ogg_stream_packetin()àogg_stream_pageout()。将Ogg 格式比特流逆映射还原为packets媒体流,以备 播放解码或以RTP封装进行 UDP传输。其中间环节是把page中的segment单元 数据按顺序重组为packet,同样媒体数据在内存中的复制只有一次,其过程可用三个 函数转换来表述:ogg_sync_pageout()àogg_stream_pagein()àogg_stream_packetout(),媒体数据复制发生在第一个函数ogg_sync_pageout()。Ogg 映射逆映射的功能都体现在ogg函数库中。
Ogg 格式是在吸收其它 流媒体 文件格式优点的基础上针对具有“packet”包边界形式的媒体流而制定的利于其存储和传输的开源流媒体文件格式,在icecast流 服务器的传输中得到了很好的应用;根据icecast官方 网站公布其测试结果,在 GB 主干网的条件下对Oggvorbis 音频传输的 客户端 并发流可达14000个。
OGG 文件每个页之间相互独立,都包含了各自应有的 信息,页的大小是可变的,通常为4K-8KB,最大值不能超过65307bytes(27+255+255*255=65307)。

模式捕获域

capture_pattern:模式捕获域,4个字节,表示页的开始,其作用是分离Ogg 封装 格式还原媒体 编码时识别新页的作用,它包含了四个幻数( ASCII 字符集):
0x4f'O'0x67'g'0x67'g'0x53'S'
stream_structure_version:1个字节,表示当前Ogg 文件 格式版本,为0。
header_type_flag:头部类型 标识,1个字节。标识当前页具体类型。其设置分三种情况:
bit0x01若已设置,页包含的媒体 编码 数据于前一页同属于一个 逻辑流的同一packet。若未设置,本页是一个新的packet。
bit0x02设置,表示 逻辑流的第一个页 bos。未设,不是第一个页。
bit0x04设置,表示 逻辑流的最后一页eos。未设,不是最后一页。
granule_position:8个字节(字节6-字节13),包含了媒体 编码相关参数 信息。对于 音频流,包含了到页为止 逻辑流在PCM中采样 编码的总次数。对于 视频流,包含了 逻辑流到本页为止视频 编码的总次数。其值若为-1,则说明到此页为止, 逻辑流的packet还未结束。
bitstream_serial_number:流 序列号,4字节,表示本页所属 逻辑流与其他逻辑流相区别的序号。
page_sequence_number:表明了本页在 逻辑流中的序列号,Ogg解码器能据此识别有无页丢失。
CRC_checksum:循环冗余 校验码 校验和,4字节域,包含页的32bitCRC校验和(包括页头部零CRC校验和页 数据校验),它的产生多项式为:0x04c11db7。
number_page_segments:1字节,给定了在本页的segment_tabale域中所出现的segement个数,其最大值为255segments(每片255个字节),即页头部第26个字节的取值范围为:0x00-0xff(0-255)。页最大 物理尺寸为65307bytes,小于64KB。
segment_table: 逻辑流中的每个packet每个segment 长度的取值(lacingvalues,除了每个packet的最后一个segment小于255外,其它segment都为255),这些值以segment出现的先后顺序依次排列。此域的 字节数为number_page_segments域所表示的数字(即在0-255之间)。
bytevalue
270xff(255)
[.................]
n-10xff(255)
n0x00-0xfe(0-254,n=num_segments+26)
页头部长度的字节数:
header_size=27+number_page_segments[Byte]
即页头部长度为上述9个域名所表述占据的字节数之和。
页的总长度:
page_size=header_size+sum(lacing_values:1...number_page_segments)[Byte]
即页的总长度为页头部长度加上紧随其后的若干segments长度之和(净载荷长度)。
Ogg封装处理过程 文件结构在音视频 编码在提供给Ogg封装之前是以具有包边界的“Packets”形式呈现的,包边界依赖于具体的编码 格式逻辑流的各个包进行分片segmentation,每片大小固定为255Byte,但包的最后一个 segment通常小于255字节。因为packet的大小可以是任意长度,由具体的媒体 编码器来决定。
进行页封装,每页都被加上页头,每页的长度可不等,由具体情况而确定。页头部segment_table域告知了“lacing_value”值的大小,即页中最后一个segment的长度(可以为0,或小于255)。一次处理一个packet,此packet被封装成一个或多个page页(page的长度设定了上限,一般为4kB);下一个packet必须用新的page开始封装,由首部字段域header_type_flag的设置规定来表示。
多个已被页 格式封装好的 逻辑流(如 语音文本图片音频视频等)按应用要求的时序关系合成物理流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值