关于 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:应该是,我没仔细看那个例子,你可以研究下。



目录
相关文章
|
编解码 API 语音技术
Opus从入门到精通(七)Opus编码基础之认识声音
前面我们分析完Opus的编解码api使用,封装原理等,接下来我们准备分析Opus编码原理.Opus编码是一个复杂的工作,我们需要做一些基本铺垫,包括认识声音,压缩编码基础.认识音频有助于我们了解音频特征,不仅对语音有助于我们理解编码技术,同时在语音识别,TTS等场景提供帮助
570 0
Opus从入门到精通(七)Opus编码基础之认识声音
|
2月前
|
编解码 语音技术 内存技术
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
《FFmpeg开发实战:从零基础到短视频上线》一书中的“5.1.2 把音频流保存为PCM文件”章节介绍了将媒体文件中的音频流转换为原始PCM音频的方法。示例代码直接保存解码后的PCM数据,保留了原始音频的采样频率、声道数量和采样位数。但在实际应用中,有时需要特定规格的PCM音频。例如,某些语音识别引擎仅接受16位PCM数据,而标准MP3音频通常采用32位采样,因此需将32位MP3音频转换为16位PCM音频。
64 0
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
|
2月前
|
Android开发 开发者
FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
谷歌推出的Transformer,作为Jetpack Media3架构的一部分,助力开发者实现音视频格式转换与编辑。Media3简化了媒体处理流程,提升了定制性和可靠性。Transformer可用于剪辑、添加滤镜等操作,其示例代码可在指定GitHub仓库中找到。要使用Transformer,需在`build.gradle`中添加相关依赖,并按文档编写处理逻辑,最终完成音视频转换任务。具体步骤包括配置剪辑参数、设置空间效果以及监听转换事件等。
53 0
FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
|
6月前
|
编解码 API 开发工具
程序与技术分享:AAC音频格式详解
程序与技术分享:AAC音频格式详解
|
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或更高版本 - 高测试覆盖率 - 仅几百行代码(只需将其包含在您的项目中即可!)
1930 0
tinytag-用于读取MP3,OGG,FLAC和Wave文件的音乐元数据的python库
爆肝总结,我爷爷都看的懂的《OGG原理》,建议各位观众姥爷先收藏
爆肝总结,我爷爷都看的懂的《OGG原理》,建议各位观众姥爷先收藏
227 0
爆肝总结,我爷爷都看的懂的《OGG原理》,建议各位观众姥爷先收藏
|
编解码 算法 数据格式
iOS音视频开发 - 音频编码格式(pcm、wav、mp3、aac、ogg)
我们通常从音乐App(如:网易云音乐)听歌时,会看到一首歌需要的存储空间大概是10M左右,对于手机磁盘来说这是可以接受的。但在网络中实时在线传播的话,这个数据量可能就太大了,所以必须对其进行压缩编码。