CN102693728A - 一种手机跨平台语言传输解码方法 - Google Patents
一种手机跨平台语言传输解码方法 Download PDFInfo
- Publication number
- CN102693728A CN102693728A CN201210186035XA CN201210186035A CN102693728A CN 102693728 A CN102693728 A CN 102693728A CN 201210186035X A CN201210186035X A CN 201210186035XA CN 201210186035 A CN201210186035 A CN 201210186035A CN 102693728 A CN102693728 A CN 102693728A
- Authority
- CN
- China
- Prior art keywords
- frame
- amr
- audio file
- file
- audio
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一一种手机跨平台语言传输解码方法,ios客户端接收到Andorid客户端amr格式音频文件,并将amr格式音频文件转换成生成wav格式的音频文件,然后,在ios平台上通过播放器重放wav格式的音频文件。本发明中,ios客户端接收到Andorid客户端amr格式音频数据,调用解码方法,返回wav格式音频数据,实现ios客户端和Andriod客户端之间音频的传输。
Description
技术领域
本发明涉及手机平台文件格式领域,特别涉及苹果的ios平台与Andriod平台之间进行语音传输的数据解码问题,具体的就是一种在ios平台上将amr格式的文件转换成wav格式的文件,供ios平台上的播放器重放。
背景技术
随着移动互联网的发展,人与人的距离越来越近,交流的方式不仅仅局限于文字和图片,直接通过声音传递信息的需求越来越普遍。目前,智能手机被ios和Andriod两大平台长期占据着,苹果iOS是由苹果公司开发的手持设备操作系统。iOS与苹果的Mac OS X操作系统一样,iOS已经占据了全球智能手机系统市场份额的30%,在美国的市场占有率为43%。Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。Andriod的MediaRecorder只支持amr,wav,acc,其中amr,全称是:Adaptive Multi-Rate,自适应多速率,是一种音频编码文件格式,专用于有效地压缩语音频率。WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM,CCITT A LAW等多种压缩运算法,支持多种音频数字,取样频率和声道,标准格式化的WAV文件和CD格式一样,也是44.1K的取样频率,16位量化数字,因此在声音文件质量和CD相差无几! WAV打开工具是WINDOWS的媒体播放器。而ios4.3之后不再支持回放amr格式的音频,但wav格式的音频文件过大不便于网络传输,而amr由于压缩比比较大,虽然相对其他的压缩格式质量一般,但是音频文件很小,有利于传输,另外,amr格式的数据人声,通话,效果还是很不错的,所以主要用于移动设备的音频。目前,类似的应用主要是使用第三方的库或者是通过服务器端实现解码,前者的可扩展性差,后者无疑会增加服务器的工作量,影响响应速度。因此必须找到一个在客户端就能实现的短小精干的方式进行解码。
发明内容
为解决ios在ios4.3之后不再支持回放amr格式的音频所带来的不便。本发明提供一种手机跨平台语言传输解码方法,在ios平台客户端实现音频amr格式解码成wav格式。
本发明为了完成其技术目的所采用的技术方案是:一种手机跨平台语言传输解码方法, ios客户端接收到Andorid客户端amr格式音频文件,并将amr格式音频文件转换成生成wav格式的音频文件,然后,在ios平台上通过播放器重放wav格式的音频文件。
进一步的,上述的手机跨平台语言传输解码方法中:在ios平台客户端上将amr格式音频文件转换成wav格式的音频文件包括以下步骤:
A、读取amr格式音频文件中标准帧,根据标准帧帧关计算标准帧的大小;
B、创建并初始化一个wave格式的音频文件;
C、读取amr格式音频文件中其它帧;
D、判断这些帧是否为坏帧,如果是坏帧,则丢弃,否则转向步骤E;
E、读取该帧的音频数据块,并将该音频数据块转换成PCM数据,根据wave格式的音频文件的要求生成帧头,形成wave格式的音频文件的数据帧,依次写入到步骤B中创建的wave格式的音频文件中。
进一步的,上述的手机跨平台语言传输解码方法中:步骤D中坏帧的判断是根据被判断的帧是否与标准帧大小一致,如果不一致则为坏帧。
本发明中,ios客户端接收到Andorid客户端amr格式音频数据,调用解码方法,返回wav格式音频数据,实现ios客户端和Andriod客户端之间音频的传输。
下面通过结合具体实施例和附图对本发明进行进一步的说明。
附图说明
附图1是本发明流程图。
具体实施方式
如图1所示,本实施例是一种手机跨平台语言传输解码方法,解决ios平台的客户端接收由Andorid客户端amr格式音频文件,并进行重放的任务。
在ios客户端接收到Andorid客户端amr格式音频文件,并将amr格式音频文件转换成生成wav格式的音频文件,然后,在ios平台上通过播放器重放wav格式的音频文件,包括以下步骤:
A、读取amr格式音频文件中标准帧,根据标准帧帧头计算标准帧的大小;
B、创建并初始化一个wave格式的音频文件;
C、读取amr格式音频文件中其它帧;
D、判断这些帧是否与标准帧大小一致,如果不一致则为坏帧,则丢弃,否则转向步骤E;
E、读取该帧的音频数据块,并将该音频数据块转换成PCM数据,根据wave格式的音频文件的要求生成帧头,形成wave格式的音频文件的数据帧,依次写入到步骤B中创建的wave格式的音频文件中。
本实施例首先通过帧读取算法,读取amr数据,因为可能存在异常帧,所以不一定所有的语音帧大小一致,对于跟正常帧大小不一致的,或者帧头跟正常帧头不一致的,就不交给解码器,直接抛弃该坏帧。交给解码器后先创建并初始化一个wave文件,然后读取amr数据的第一帧作为参考帧,解码一个amr音频帧成为PCM数据,逐帧解码amr并写到wave文件里面,最后重写wave文件头,打包成为wav格式的音频数据。
本实施例是根据AMR数据与wav格式的音频数据的各自特点而将AMR数据转换成wav格式的音频数据。
AMR全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的。
AMR: 又称为AMR-NB,相对于WB而言,语音带宽范围:300-3400Hz,8KHz抽样。
AMR有以下一些编码方式:
Mode 0 - AMR 4.75 - Encodes at 4.75kbit/s
Mode 1 - AMR 5.15 - Encodes at 5.15kbit/s
Mode 2 - AMR 5.9 - Encodes at 5.9kbit/s
Mode 3 - AMR 6.7 - Encodes at 6.7kbit/s
Mode 4 - AMR 7.4 - Encodes at 7.4kbit/s
Mode 5 - AMR 7.95 - Encodes at 7.95kbit/s
Mode 6 - AMR 10.2 - Encodes at 10.2kbit/s
Mode 7 - AMR 12.2 - Encodes at 12.2kbit/s
8~15位一些 noise frames 和保留位的定义。
每种格式对应的帧的大小如下
CMR Mode Frame size (bytes)
0 AMR4.75 13
1 AMR 5.15 14
2 AMR 5.9 16
3 AMR 6.7 18
4 AMR 7.4 20
5 AMR 7.95 21
6 AMR 10.2 27
7 AMR12.2 32
WAVE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。WAVE文件是由样本组织而成的。在单声道WAVE文件中,声道0代表左声道,声道1代表右声道。在多声道WAVE文件中,样本是交替出现的。
WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式。 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。
RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVE Chunk,Format Chunk,Fact Chunk(可选),Data Chunk。
------------------------------------------------
| RIFF WAVE Chunk |
| ID = 'RIFF' |
| RiffType = 'WAVE' |
------------------------------------------------
| Format Chunk |
| ID = 'fmt ' |
------------------------------------------------
| Fact Chunk(optional) |
| ID = 'fact' |
------------------------------------------------
| Data Chunk |
| ID = 'data' |
------------------------------------------------
Data Chunk是真正保存wav数据的地方,以'data'作为该Chunk的标示。然后是数据的大小。紧接着就是wav数据。根据Format Chunk中的声道数以及采样bit数,wav数据的bit位置可以分成以下几种形式:
对于8位单声道,每个样本数据由8位(bit)表示;
对于8位立体声,每个声道的数据由一个8位(bit)数据表示,且第一个8位(bit)数据表示0声道(左)数据,紧随其后的8位(bit)数据表示1声道(右)数据;
对于16位单声道,每个样本数据由16位(bit)表示;其中低字节存放高位,高字节存放低位
对于16位立体声,每个声道的数据由一个16位(bit)数据表示,且第一个16位(bit)数据表示0声道(左)数据,紧随其后的16位(bit)数据表示1声道(右)数据。
---------------------------------------------------------------------
| 单声道 | 取样1 | 取样2 | 取样3 | 取样4 |
| |--------------------------------------------------------
| 8bit量化 | 声道0 | 声道0 | 声道0 | 声道0 |
---------------------------------------------------------------------
| 双声道 | 取样1 | 取样2 |
| |--------------------------------------------------------
| 8bit量化 | 声道0(左) | 声道1(右) | 声道0(左) | 声道1(右)
---------------------------------------------------------------------
| | 取样1 | 取样2 |
| 单声道 |--------------------------------------------------------
| 16bit量化 | 声道0 | 声道0 | 声道0 | 声道0 |
| | (低位字节) | (高位字节) | (低位字节) | (高位字节) |
---------------------------------------------------------------------
| | 取样1 |
| 双声道 |--------------------------------------------------------
| 16bit量化 | 声道0(左) | 声道0(左) | 声道1(右) | 声道1(右)
| | (低位字节) | (高位字节) | (低位字节) | (高位字节) |
---------------------------------------------------------------------
这里我们主要讨论如何将amr音频进行成一个wave 8khz 16位单声道文件。
Amr 一帧为20毫秒
AMR 4.75Kbits/s:
每秒产生的声音位数 = 4750bits/s
每20ms帧占用的位数 = 4750bits/s / 50frames/s = 95bits
每20ms帧占用的字节数 = 95bits / 8bits/byte = 11.875bytes – 取整到12字节,不足的补0
加上一个字节的帧头,所以,20ms一帧的AMR: 12-bytes + 1-byte = 13-bytes
相反,转换回来就成了13-bytes * 50frames/s * 8bits/byte = 5200bits/s。
所以,在将amr音频格式转化成成一个wave文件时,我们先要判断AMR文件的模式确定速率,再根据相应模式下的帧的大小确定一帧数据的大小,再根据帧头个数确定整个音频数据的大小,音频数据的大小就是wava文件数据块大小,根据wava数据块的格式将音频数据写入wava数据块,加上文件头RIFF得到wav格式的数据。
Claims (3)
1.一种手机跨平台语言传输解码方法,其特征在于:ios客户端接收到Andorid客户端amr格式音频文件,并将amr格式音频文件转换成生成wav格式的音频文件,然后,在ios平台上通过播放器重放wav格式的音频文件。
2.根据权利要求1所述的手机跨平台语言传输解码方法,其特征在于:在ios平台客户端上将amr格式音频文件转换成wav格式的音频文件包括以下步骤:
A、读取amr格式音频文件中标准帧,根据标准帧帧头计算标准帧的大小;
B、创建并初始化一个wave格式的音频文件;
C、读取amr格式音频文件中其它帧;
D、判断这些帧是否为坏帧,如果是坏帧,则丢弃,否则转向步骤E;
E、读取该帧的音频数据块,并将该音频数据块转换成PCM数据,根据wave格式的音频文件的要求生成帧头,形成wave格式的音频文件的数据帧,依次写入到步骤B中创建的wave格式的音频文件中。
3.根据权利要求2所述的手机跨平台语言传输解码方法,其特征在于:步骤D中坏帧的判断是根据被判断的帧是否与标准帧大小一致,如果不一致则为坏帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210186035XA CN102693728A (zh) | 2012-06-07 | 2012-06-07 | 一种手机跨平台语言传输解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210186035XA CN102693728A (zh) | 2012-06-07 | 2012-06-07 | 一种手机跨平台语言传输解码方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102693728A true CN102693728A (zh) | 2012-09-26 |
Family
ID=46859112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210186035XA Pending CN102693728A (zh) | 2012-06-07 | 2012-06-07 | 一种手机跨平台语言传输解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102693728A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857833A (zh) * | 2012-10-15 | 2013-01-02 | 深圳市佳创软件有限公司 | 一种适配android stagefright 多媒体框架的音频解码系统及方法 |
CN105931655A (zh) * | 2016-04-22 | 2016-09-07 | 浙江工业大学 | 一种苹果mov格式音频转成windows音频的方法 |
CN107370717A (zh) * | 2016-05-13 | 2017-11-21 | 上海神计信息系统工程有限公司 | 一种跨平台音频传输方法 |
CN107852357A (zh) * | 2015-12-14 | 2018-03-27 | 松下电器(美国)知识产权公司 | 安全装置、网络系统以及攻击检测方法 |
CN109410967A (zh) * | 2017-08-15 | 2019-03-01 | 武汉斗鱼网络科技有限公司 | iOS系统向安卓系统传输音频数据的方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101232542A (zh) * | 2007-01-23 | 2008-07-30 | 乐金电子(中国)研究开发中心有限公司 | 移动终端实现语音备忘功能的方法及应用其的移动终端 |
CN101312460A (zh) * | 2007-05-25 | 2008-11-26 | 上海美通无线网络信息有限公司 | 将多种格式的媒体文件转换成目标设备支持的媒体文件的方法 |
-
2012
- 2012-06-07 CN CN201210186035XA patent/CN102693728A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101232542A (zh) * | 2007-01-23 | 2008-07-30 | 乐金电子(中国)研究开发中心有限公司 | 移动终端实现语音备忘功能的方法及应用其的移动终端 |
CN101312460A (zh) * | 2007-05-25 | 2008-11-26 | 上海美通无线网络信息有限公司 | 将多种格式的媒体文件转换成目标设备支持的媒体文件的方法 |
Non-Patent Citations (2)
Title |
---|
JINLKING: "amr与wave编解码", 《CSDN博客_HTTP://BLOG.CSDNNET/JINLKING/ARTICLE/DETAILS/4256311》, 10 June 2009 (2009-06-10), pages 1 * |
SHOUJIFENG: "IOS与Android语音互通方案", 《新浪博客_HTTP://BLOG.SINA.COM.CN/U/1737391584》, 9 February 2012 (2012-02-09), pages 1 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857833A (zh) * | 2012-10-15 | 2013-01-02 | 深圳市佳创软件有限公司 | 一种适配android stagefright 多媒体框架的音频解码系统及方法 |
CN102857833B (zh) * | 2012-10-15 | 2015-02-18 | 深圳市佳创软件有限公司 | 一种适配android stagefright 多媒体框架的音频解码系统及方法 |
CN107852357A (zh) * | 2015-12-14 | 2018-03-27 | 松下电器(美国)知识产权公司 | 安全装置、网络系统以及攻击检测方法 |
CN107852357B (zh) * | 2015-12-14 | 2020-11-20 | 松下电器(美国)知识产权公司 | 安全装置、网络系统以及攻击检测方法 |
CN105931655A (zh) * | 2016-04-22 | 2016-09-07 | 浙江工业大学 | 一种苹果mov格式音频转成windows音频的方法 |
CN105931655B (zh) * | 2016-04-22 | 2018-10-23 | 浙江工业大学 | 一种苹果mov格式音频转成windows音频的方法 |
CN107370717A (zh) * | 2016-05-13 | 2017-11-21 | 上海神计信息系统工程有限公司 | 一种跨平台音频传输方法 |
CN109410967A (zh) * | 2017-08-15 | 2019-03-01 | 武汉斗鱼网络科技有限公司 | iOS系统向安卓系统传输音频数据的方法及系统 |
CN109410967B (zh) * | 2017-08-15 | 2022-03-25 | 武汉斗鱼网络科技有限公司 | iOS系统向安卓系统传输音频数据的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FI119533B (fi) | Audiosignaalien koodaus | |
JP4724452B2 (ja) | デジタルメディア汎用基本ストリーム | |
CN103258541B (zh) | 音频解码方法 | |
CN101208740B (zh) | 背景噪声信息的非连续传输和准确再现的方法 | |
CN103109321B (zh) | 估计音调滞后 | |
JP3354863B2 (ja) | ビット率の調節可能なオーディオデータ符号化/復号化方法及び装置 | |
JP5174027B2 (ja) | ミックス信号処理装置及びミックス信号処理方法 | |
TWI459377B (zh) | 用於編碼及解碼一暫態訊框之電子器件、裝置、方法及電腦程式產品 | |
KR101548846B1 (ko) | 워터마킹된 신호의 적응적 인코딩 및 디코딩을 위한 디바이스 | |
US20080281602A1 (en) | Coding Reverberant Sound Signals | |
US20030215013A1 (en) | Audio encoder with adaptive short window grouping | |
CN102693728A (zh) | 一种手机跨平台语言传输解码方法 | |
KR101590239B1 (ko) | 워터마킹된 신호를 인코딩 및 디코딩하는 디바이스들 | |
CN102385864B (zh) | 一种音频数据解码方法、装置及音频播放器 | |
CN105407225A (zh) | 一种数据传输方法及蓝牙设备 | |
CN105247610B (zh) | 编码装置和方法、解码装置和方法以及记录介质 | |
CN105745703A (zh) | 信号编码方法和装置以及信号解码方法和装置 | |
BR112016022764B1 (pt) | Aparelho e métodos de comutação de tecnologias de codificação em um dispositivo | |
ES2898281T3 (es) | Control de ancho de banda en codificadores y/o decodificadores | |
CN101645967A (zh) | 一种以自定义格式处理多媒体数据的移动终端及实现方法 | |
CN115223577A (zh) | 音频处理方法、芯片、装置、设备和计算机可读存储介质 | |
CN115206352A (zh) | 音频处理方法、装置、芯片、电子设备及存储介质 | |
ES2963219T3 (es) | Método y aparato de codificación de señales estéreo, método y aparato de decodificación de señales estéreo | |
JP2006106475A (ja) | 圧縮オーディオデータ処理方法 | |
Mohdar et al. | Audio compression testing tool for multimedia applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120926 |