目录
1简介编辑
Ogg全称应该是OGG Vorbis, 是一种新的
音频
压缩格式,类似于MP3等的
音乐格式。但有一点不同的是,它是完全
免费、开放和没有
专利限制的。OGG Vorbis有一个特点是支持多声道,随着它的流行,以后用随身听来听DTS
编码的多声道作品将不会是梦想。
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不相上下
如果两个
文件都是以同样的位
速率和CBR(常量位速率,指文件从头到尾都是一种位速率)方式来
编码的话,那他们的大小肯定相同。当前 Vorbis 是以VBR(可
变位
速率)方式
编码的,这使得Ogg的
文件可以更小,因为VBR方式可以处理能大幅度进行压缩的
音频
数据(比如无声的时段)而节省
空间。
优点2:Ogg Vorbis支持类似于MP3的ID3
信息
优点3:Ogg Vorbis
格式支持流式播放
音频流是Vorbis的一个重要组成部分.vorbis
格式从设计的一开始就是立足于可以容易地进行流式处理。并且,Vorbis的设计者正与Icecast
流媒体软件的创造者一起使Icecast兼容Vorbis。
Vorbis具有一个设计良好、灵活的注释,避免了像MP3
文件的
ID3标记那样烦琐的操作;Vorbis还具有位
速率缩放:可以不用重新
编码便可调节文件的位速率。Vorbis
文件可以被分成小块并以
样本粒度进行
编辑;Vorbis支持多通道; Vorbis文件可以以
逻辑方式相连接等。
转换OGG
格式的方法有很多,但最简单的方法是就是用
Foobar2000+OGGENC外部
编码器。Foobar2000现在很流行,它是一个Windows 平台下的高级
音频
播放器。不仅
音质很出色,功能也很强大。Foobar2000支持
WAV、
AIFF、
VOC、
AU、
SND、Ogg Vorbis、
MPC、
MP2、MP3等
音乐格式,通过
插件还能支持
MPEG-4、
AAC、
FLAC、Ogg、
FLAC、MonkeysAudio、
WavPack、
Speex、
CDDA、
SPC及各种
MOD类型,支持的类型是已经足够了。利用Foobar2000的转换功能,可以方便的其它的
音频格式制作成OGG格式。
比如在
foobar2000中用鼠标选中要转换的歌曲,右键点击,选中“
转换”,然后选择“转换到同目录”,这样就不用找转换出来的歌了。FOOBAR会弹出个“转换器设置”,在“
编码预置”里选择“Ogg Vorbis”。FOOBAR默认的是Q5。可以点击“。。。”,然后在
在千千静听中,把想转的歌曲加入到
千千静听,在
歌曲上右键点转换
格式--输出格式中选
命令行
编码器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。据官方声称,与其他会造成立体空间感减弱的
编码
模型相比,这两种技术都可以在保持
编码器的灵活性的同时而不损害本来的
立体声空间
影像--相信配合
iRiver的
3d音效会有更好的表现力,而且实现的复杂程度比联合立体声方式要低。 Ogg的
编码中的比特率选项主要有
ABR、
VBR和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_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个。
模式捕获域
0x4f'O'0x67'g'0x67'g'0x53'S'
header_type_flag:头部类型
标识,1个字节。标识当前页具体类型。其设置分三种情况:
bit0x04设置,表示
逻辑流的最后一页eos。未设,不是最后一页。
granule_position:8个字节(字节6-字节13),包含了媒体
编码相关参数
信息。对于
音频流,包含了到页为止
逻辑流在PCM中采样
编码的总次数。对于
视频流,包含了
逻辑流到本页为止视频
帧
编码的总次数。其值若为-1,则说明到此页为止,
逻辑流的packet还未结束。
page_sequence_number:表明了本页在
逻辑流中的序列号,Ogg解码器能据此识别有无页丢失。
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的设置规定来表示。