安卓语音通话

这段时间在做公司的语音这一块,主要是实现 手机端和pc端的语音通话问题(回音和噪音消除暂时没有考虑)用得是amr得方案。。

安卓手机端自带的录音是可以直接录成amr的格式,省去了压缩的功夫。但是播放的时候如果要是直接播amr的话 只能通过文件的方式进行,这就会导致延迟。

目前软件是用得安卓自己提供的硬解码方案,没有使用自己的软解码,主要是如果软解码的话程序cpu占用率会很高。

录音方面用得是MediaRecord边录边发送。基本上没有难点。

手机播放方面 由于MediaPlay  只能从文件或者网络播放,没有办法直接从socket端直接播。。于是就采用了文件的形式,socket端将接受的数据写到文件里,然后给Mediaplayer 指定文件描述符。这种方法的问题如果写入文件的数据太多了,难么延迟就会很大,要是写的数据量少,那么播起来会有明显的一顿一顿的,文件这种方式必然会导致一定的延迟。

这两天在测试的时候感觉文件这种方式话音质量太差了,再者发现在录音和播放语音的时候发现后台的MediaServer的服务CPU 占用率也不小,有可能是测试的手机对硬件解码不太友好。于是想试试软解码的情况下运行如何。。

如果要进行软解码如要amr的解码的代码,PC端用得是amr标准代码,如果要移植到安卓的话,需要将其用ndk编译成动态库,本以为很简单,但是在处理android.mk的时候难倒我了,这么make真不好写,如于是乎重新学习了一下make,然后根据有android.mk的代码好好研究了一番,终于完成了。

源文件太多了,原本对make就比较头疼。

这是我得android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
amrtool_src := $(wildcard $(LOCAL_PATH)/amrtool/*.cpp)
amrtool_src := $(amrtool_src:$(LOCAL_PATH)/amrtool/%=%)
common_src := $(wildcard $(LOCAL_PATH)/amrnb/*.cpp)
common_src := $(common_src:$(LOCAL_PATH)/amrnb/%=%)
dec_src = $(wildcard $(LOCAL_PATH)/amrnb/dec/*.cpp)
dec_src := $(dec_src:$(LOCAL_PATH)/amrnb/dec/%=%)
enc_src = $(wildcard $(LOCAL_PATH)/amrnb/enc/*.cpp)
enc_src := $(enc_src:$(LOCAL_PATH)/amrnb/enc/%=%)
LOCAL_SRC_FILES :=    $(amrtool_src:%=amrtool/%)    $(common_src:%=amrnb/%)    $(dec_src:%=amrnb/dec/%)    $(enc_src:%=amrnb/enc/%)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/amrnb $(LOCAL_PATH)/amrnb/dec $(LOCAL_PATH)/amrnb/enc 
LOCAL_MODULE := amr
LOCAL_CFLAGS := -DANDROID_NDK             -DDISABLE_IMPORTGL -Wno-sequence-point -Wno-extra
include $(BUILD_SHARED_LIBRARY)
时间: 2024-10-14 05:18:53

安卓语音通话的相关文章

4G LTE 网只能提供数据服务,不能承载语音通话,该怎么理解?

转:http://www.qbiao.com/16776.html 这个问题要从移动核心网的角度来理解.我们平时说的WCDMA.TD-SCDMA.TD-LTE其实通常指空口技术,即从手机到基站的通信技术.而移动通信的核心控制部分,则由核心网完成--如何在两个基站间建立起语音连接?何时给拨号方返回嘟嘟的线音?何时给接收方发出振铃?如何判断一个用户是否开通了呼叫转移业务,如何实现?如何建立从手机到因特网服务器的数据连接?如何判断用户是3G用户还是LTE用户? 这些都是由移动核心网完成的. 下面来说移

Android P2P语音通话实现

1.http://www.cnblogs.com/milospooner/archive/2012/07/13/2590950.html 2.http://my.oschina.net/sanshang/blog/11151 3.http://bashell.sinaapp.com/archives/voip-on-android-use-juv-red5-speex-2.html 4.http://blog.csdn.net/ranxiedao/article/category/1194641

对语音通话占用带宽的理解

有时候客户比較关心要申请多少M的带宽来保证server能够达到多少路的语音通话,这里仅描写叙述一下我个人的理解. 这里以G711编码为例进行说明,同一时候大家应该清楚G711编码的标准编码速率为64Kbps.而且如果使用的是不含有VLAN的静态IP上网方式的LAN上行设备(主要在以下计算"整个报文的大小"时须要考虑这些因素). 1.先给出换算一路语音通话的带宽公式: 一路通话带宽X             整个报文的大小(假设进行媒体加密这里须要增加加密的填充字节) ---------

Android 平台语音通话及回音消除、噪音消除研究(转)

一 Android操作系统由来 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平 板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名称,中国大陆地区较多人使用"安 卓"或"安致".Android操作系统最初由Andy Rubin开发,主要支持手机.2005年8月由Google收购注资. 2007年11月,Google与84家硬件制造商.软件开发商及电信营运商组建开放手机联盟共同研发改良Androi

安卓手机通话记录删了还能恢复吗

安卓手机通话记录删了还能恢复吗?我们在平常的时候,经常会因为自己的一些失误操作导致我们的通话记录被删除,其实被删除之后,我们有的时候根本就不担心,因为是可以通过一些方法找回的.若是使用的方法都没有找回通话记录该怎么办呢?下面小编就给大家分享一个找回通话记录的新办法.步骤一:我们可以在手机应用商城或是手机浏览器查找"极速数据恢复"工具,下载并安装在手机上.步骤二:打开恢复工具,我们就可以看到手机界面出现的几大恢复功能选项,选择"通话记录恢复"功能就可以了.步骤三:这时

qt中采用G.729A进行网络语音通话实验程序

?? 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN8 开发环境:Qt5 3.1.2 说明: G.729是电话带宽的语音信号编码的标准,G.729A是它的简化版本. 本程序采样频率为8KHz,量化位数为16位,则码率为128kbps. G.729A压缩比率为1/16,则压缩后的码率为8kbps. 本测试程序实现网络语音通讯的功能. 源码: pro文件加载库文件 LIBS += -LC:\mnt\test_audio_recor

一键安装JS SDK 网页版WebRTC 网页 SIP客户端 语音通话,可以做web坐席

目录服务器环境要求 1下载脚本文件并安装 1修改绑定的域名 1替换域名证书 2重启Web 2呼叫测试 3 服务器环境要求CentOS 6.9 64bit 下载脚本文件并安装wget http://voip-sdk.oss-cn-beijing.aliyuncs.com/rtc_sip/install_rtc_sip.sh wget http://voip-sdk.oss-cn-beijing.aliyuncs.com/rtc_sip/python_install.sh #yum -y insta

与安卓交互的上传图片 与 上传语音、视频

1.与安卓语音的交互 注意:获取语音的src 需要用DOM元素获取 (1)HTML (点击按钮告诉安卓,录音开始与结束) <span class="voice" onclick="voicecli()">上传语音</span> (2)JS //点击语音 function voicecli() { $('.addPicture').hide(); $('.expaddVoice').show(); //调方法 //判断调安卓方法显示或隐藏语音

安卓初步:通讯技术介绍&amp;&amp;安卓介绍

通讯技术: 1G    模拟制式    只能进行语音通话. 2G    GSM, CDMA    收发短信和邮件. 2.5G    GPRS, EDGE    访问wap网络数据.(图片, 壁纸, 文字信息) 3G    WCDMA(联通), CDMA2000(电信), TD-SCDMA(移动)             发微博, 查看高清图片, 小电影. 3.5G    HSDPA, HSDPA+ 4G    TD-LTE        下载速度: 50Mb/s  = 6MB/s    上传速度