关于 speex 和 ogg 的一个没事找事儿的回答

简介: 关于 speex 和 ogg 的一个没事找事儿的回答 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

关于 speex 和 ogg 的一个没事找事儿的回答

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。



真是不知干什么好了,累还睡不着,再没事儿找个事儿干吧!

是不是有点所问非所答呢?。。。

感觉问者是不晓得文件格式是干啥用的,所以就没事儿找事儿地作了一些自已知道的,并不一定对口的回答。

不过,这个答得也满不错的,正好把我之前研究语音、图像文件格式的一些心得整理出来了。

如果没有这个问题,可能还没这个机会去思考,可能也不会总结出这些东西来。

帮助别人的过程,就是自已思考的过程,也是自我提高的一个过程,正所谓,送人玫瑰,手有余香!


问题出自:http://blog.csdn.net/xyz_lmn/article/details/8013490#reply

2楼  Y080Y 2012-12-18 23:01发表 [回复]
我看了一下网上有一个人,说要用ogg编码才能播放.我也下载了他写的源码.可以录制和播放.不知道ogg和spx关系
Re:  xyz_lmn 2012-12-19 09:07发表 [回复]
回复Y080Y:Speex类似于压缩解压,压缩解压需要源文件,ogg文件就是源文件。像mp3文件也可当作源文件。
Re:  Y080Y 2012-12-19 20:55发表 [回复]
回复xyz_lmn:那可不可以这样理解,speex其实就相当于rar压缩器,我们包装成.spx和ogg等都没关系.那个例子最后的格式是spx的.但是他明明是用ogg包装.这点我想不明白,呵呵.是不是他本来就是ogg.只是他自己把后缀名门成spx而已.例子地址:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=152752&page=1#pid1242431
Re:  sleks 刚刚发表 [回复]
回复Y080Y:一种数据,像是音频,图像都有相应的模数转换过程,得到原始数据后,可以不考虑压缩,这些数据在内存中,我们是用一种存储方式的,在内存中能直接知道它的大小和采样标准;假设你要把它直接发给别人,比如通过SOCKET,或者被别人在网上监听拦截后,就很不容易猜出这是一种什么数据,不光需要使用的人不知道,监听破解的人也不容易知道;那么我们为了需要的人能知道,就得把内存中的存储信息,如字节数,还有你采样时所使用的方式,比如几声道,采样频率等一起告诉对方,那么就有了文件存储格式。其实文件存储格式是一种典型的例子,虽然并不一定要存储成文件,但至少它表明了,这一堆数据是什么,怎样组织的,这就是文件头的概念;
由此,ogg作为一种文件格式,无非就是要把speex压缩过的数据的一些信息也带上,这些信息是在你脑子里的,是在你采样过程中的,是在内存中的,并不能通过这些语音数据本身能体现出来的。就如一个字符串数组不以\0结尾,作为参数直接传给一个函数的话,这个函数就很难处理了,因为字符串数组本身有大小,但传给函数的只是一个指定起始地址和指针类型,并不能传递元素个数,所以你看到的c的函数调用,传入数组时,都会带一个数组大小,就是这个原因,是因为数组有自描述性,但指针并不能充份描述数组的个数。
至于ogg编码之后,就和文后的参考中的开源站上所说,flv编码之后一样了,要流媒体传输,还得编码......
ogg编码,就相当于flv编码,就是在这段speex处理后的语音数据前加上对这段数据的描述信息,至于写不写入文件中存储都不重要了,直接在网上传输也是没问题的,至少文件头部有说明这是一个什么样的文件,然后就按这个文件的组织格式来提取相应参数,根据参数,就能把压进去的speex数据提出来了;钱存到银行了,有流程,虽然存的都是钱,或是美元或是人民币,或多或少,但都得按银行的流程来办;取钱正好相反的流程。
Re:  xyz_lmn 2012-12-19 21:14发表 [回复]
回复Y080Y:应该是,我没仔细看那个例子,你可以研究下。



目录
相关文章
|
12月前
|
编解码 API 语音技术
Opus从入门到精通(七)Opus编码基础之认识声音
前面我们分析完Opus的编解码api使用,封装原理等,接下来我们准备分析Opus编码原理.Opus编码是一个复杂的工作,我们需要做一些基本铺垫,包括认识声音,压缩编码基础.认识音频有助于我们了解音频特征,不仅对语音有助于我们理解编码技术,同时在语音识别,TTS等场景提供帮助
377 0
Opus从入门到精通(七)Opus编码基础之认识声音
|
8月前
|
计算机视觉
ffmpeg配置opus
ffmpeg配置opus
166 0
|
12月前
|
编解码 内存技术
Opus从入门到精通(四)Opus解码程序实现
由于我们解码后的数据直接写入文件,无法通过vlc等播放器播放,我们通过lame将解码后的数据再编码成mp3,当然,你要乐意也可以直接价格wav头输出成wav. 通过采样率,声道数等创建lame编码器
453 0
|
12月前
|
存储 编解码 缓存
Opus从入门到精通(三)手撸一个Opus编码程序
PCM数据大小怎么计算呢?根据采样率采样格式,声道数计算.根据前面文章音视频之音频知识入门介绍:PCM文件大小 = 采样率 * 采样格式 * 声道数 * 录制时长采样率即一秒多少采样,采样格式指一个采用占多少字节,通常一个采用使用一个字节或者两个字节,所以采样率*采样格式计算出一秒钟一个声道PCM多少字节,乘以声道数,算出一秒钟PCM大小,再乘以时长就可以计算出PCM文件大小.
399 0
|
存储 编解码 API
opus
Opus是一款完全开放的功能广泛的音频编解码器。Opus在互联网上的交互式语音和音乐传输方面无可匹敌,但也适用于存储和流媒体应用程序。它由Internet工程任务组(IETF)标准化为RFC 6716 ,该标准融合了Skype的SILK编解码器和Xiph.Org的CELT编解码器中的技术。
168 0
|
Python
tinytag-用于读取MP3,OGG,FLAC和Wave文件的音乐元数据的python库
tinytag是一个python库,用于使用python读取MP3,OGG,OPUS,MP4,M4A,FLAC,WMA和Wave文件的音乐元数据。特征: - 读取音频文件的标签,长度和封面图像 - 支持的格式:(MP3 (ID3 v1, v1.1, v2.2, v2.3+)、Wave/RIFF、OGG、OPUS、FLAC、WMA、MP4/M4A/M4B) - 纯python,无依赖 - 支持python 2.7和3.4或更高版本 - 高测试覆盖率 - 仅几百行代码(只需将其包含在您的项目中即可!)
1583 0
tinytag-用于读取MP3,OGG,FLAC和Wave文件的音乐元数据的python库
爆肝总结,我爷爷都看的懂的《OGG原理》,建议各位观众姥爷先收藏
爆肝总结,我爷爷都看的懂的《OGG原理》,建议各位观众姥爷先收藏
135 0
爆肝总结,我爷爷都看的懂的《OGG原理》,建议各位观众姥爷先收藏
|
编解码 算法 数据格式
iOS音视频开发 - 音频编码格式(pcm、wav、mp3、aac、ogg)
我们通常从音乐App(如:网易云音乐)听歌时,会看到一首歌需要的存储空间大概是10M左右,对于手机磁盘来说这是可以接受的。但在网络中实时在线传播的话,这个数据量可能就太大了,所以必须对其进行压缩编码。
|
存储 编解码 索引
Bluetooth Profile Specification之1.2 A2DP 之Audio Codec(音频编解码器)-MPEG-1,2 Audio和MPEG-2, 4 AAC
Bluetooth Profile Specification之1.2 A2DP 之Audio Codec(音频编解码器)-MPEG-1,2 Audio和MPEG-2, 4 AAC
217 0
Bluetooth Profile Specification之1.2 A2DP 之Audio Codec(音频编解码器)-MPEG-1,2 Audio和MPEG-2, 4 AAC

热门文章

最新文章