❶ g711a与g711u编码方式什么不同
带宽=包长度×每秒包数 =包长度×(1/打包周期) =(Ethernet头+IP头+UDP头+RTP头+有效载荷)×(1/打包周期) =(208bit +160bit+64bit+96bit +有效载荷)×(1/打包周期) =(528bit+(打包周期(秒)×每秒的比特数))×(1/打包周期) =( 528 / 打包周期 ) + 每秒比特数 按照上面的计算公式: G711:20ms打包!
❷ AAC ARM和PCM编码都有什么区别LTE中有说用了G711也就是对数PCM编码标准,但是百
AAC和ARM都是对PCM进行编码,你可以理解为压缩,因为PCM是最原始采集到的数字信号,是无损的,体积很大不利于网络传输。
G711也是对PCM的编码,你可以理解为和AAC一样。
目前音视频更多是采用AAC编码。
❸ android系统自带的网络电话(可以设置sip 或者iax2)用的默认编码是什么在哪儿可以设置编码
android系统自带的互联网电话用的是g711编码,可以到voipdoup网站下载csipsimple软件,设置使用729,gsm编码使用。
1、G.711:是一种由国际电信联盟(ITU-T)订定音频编码方式,又称为ITU-T G.711。
2、G.711使用64Kbps的带宽,可将14bits转换成8bits。目前G.711有两个编码方式:一种是u-law又称mu-law,主要运用于北美和日本;另一种是a-law,主要运用于欧洲和世界其他地区。其中,a-law编码方式是为方便计算机处理而特别设计的。2008年3月国际电信联盟正式发布了最新的宽带语音编译码标准G.711.1。
❹ 求助帖,pcm转g711
这是很久的代码了,有点忘记了,给你参考下。
public final static String TAG = "DefaultTalkBackSession";
TalkBackSession session;
CodecLibObj obj;
private BlockingQueue<byte[]> inputQueue = new LinkedBlockingQueue<byte[]>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
session = new DefaultTalkBackSession("192.168.78.65",15528);
obj = session.codecAbilityQuery();
if (obj != null) {
session.startLiveListening(new TalkBackSession.OnAudioDataReceiveListener() {
@Override
public void onAudioDataReceived(byte[] data) {
Log.d(TAG, "收到音频数据:" + Utils.toHex(data));
try {
inputQueue.put(data);
} catch (InterruptedException e) {
}
}
}, obj, 1);
session.startCall(obj, 1);
ulaw_play();
ulaw_recored();
}
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
protected void onDestroy() {
super.onDestroy();
if (session != null) {
if (obj != null) {
session.stopLiveListening();
session.endCall();
}
((DefaultTalkBackSession) session).stop();
}
ulaw_stop();
}
private void ulaw_stop(){
if(ulaw_decode_thread != null){
ulaw_decode_thread.interrupt();
}
ulawRunning = false;
}
private void ulaw_play(){
ulawRunning = true;
(ulaw_decode_thread = new Thread(ulaw_decode)).start();
}
boolean ulawRunning = false;
Thread ulaw_decode_thread;
/**
* 解码线程
*/
Runnable ulaw_decode = new Runnable(){
public void run() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
int samp_rate = 8000 ;
int maxjitter = AudioTrack.getMinBufferSize(samp_rate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioTrack track = new AudioTrack(AudioManager.STREAM_VOICE_CALL,samp_rate,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
maxjitter, AudioTrack.MODE_STREAM);
track.play();
try {
while(ulawRunning)
{
byte[] dataForDecode = new byte[0];
try {
dataForDecode = inputQueue.take();
} catch (InterruptedException e) {
}
short[] audioData = new short [dataForDecode.length];
//decode
G711.ulaw2linear(dataForDecode, audioData, audioData.length);
Log.d(TAG, "audioData=" + Utils.toHex(audioData)) ;
//play
track.write(audioData, 0, audioData.length);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
track.release();
track = null;
}
}
};
Runnable ulaw_encode = new Runnable(){
public void run() {
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
AudioRecord record = getAudioRecord();
int frame_size = 160;
// int frame_rate = 8000/frame_size ;
// long frame_period = 1000 / frame_rate;
short [] audioData = new short [frame_size];
byte[] encodeData = new byte[frame_size];
int num = 0;
try {
while(ulawRunning)
{
num = record.read(audioData, 0, frame_size);
if(num<=0) continue;
calc2(audioData,0,num);
//进行pcmu编码
G711.linear2ulaw(audioData, 0, encodeData, num);
//send
session.sendAudioData(encodeData);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
record.release();
}
}
};
void calc2(short[] lin,int off,int len) {
int i,j;
for (i = 0; i < len; i++) {
j = lin[i+off];
lin[i+off] = (short)(j>>1);
}
}
private void ulaw_recored(){
new Thread (ulaw_encode).start();
}
private AudioRecord getAudioRecord(){
int samp_rate = 8000 ;
int min = AudioRecord.getMinBufferSize(samp_rate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
Log.e(TAG, "min buffer size:"+min);
AudioRecord record = null;
record = new AudioRecord(
MediaRecorder.AudioSource.MIC,//the recording source
samp_rate, //采样频率,一般为8000hz/s
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
min);
record.startRecording();
return record;
}
❺ android解码播放G711音频流该怎么做
java">这是很久的代码了,有点忘记了,给你参考下。
publicfinalstaticStringTAG="DefaultTalkBackSession";
TalkBackSessionsession;
CodecLibObjobj;
privateBlockingQueue<byte[]>inputQueue=newLinkedBlockingQueue<byte[]>();
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
try{
session=newDefaultTalkBackSession("192.168.78.65",15528);
obj=session.codecAbilityQuery();
if(obj!=null){
session.startLiveListening(newTalkBackSession.OnAudioDataReceiveListener(){
@Override
publicvoidonAudioDataReceived(byte[]data){
Log.d(TAG,"收到音频数据:"+Utils.toHex(data));
try{
inputQueue.put(data);
}catch(InterruptedExceptione){
}
}
},obj,1);
session.startCall(obj,1);
ulaw_play();
ulaw_recored();
}
}catch(Exceptione){
e.printStackTrace();//|Settings|FileTemplates.
}
}
protectedvoidonDestroy(){
super.onDestroy();
if(session!=null){
if(obj!=null){
session.stopLiveListening();
session.endCall();
}
((DefaultTalkBackSession)session).stop();
}
ulaw_stop();
}
privatevoilaw_stop(){
if(ulaw_decode_thread!=null){
ulaw_decode_thread.interrupt();
}
ulawRunning=false;
}
privatevoilaw_play(){
ulawRunning=true;
(ulaw_decode_thread=newThread(ulaw_decode)).start();
}
booleanulawRunning=false;
Threalaw_decode_thread;
/**
*解码线程
*/
Runnableulaw_decode=newRunnable(){
publicvoidrun(){
try{
Thread.sleep(200);
}catch(InterruptedExceptione){
e.printStackTrace();
}
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
intsamp_rate=8000;
intmaxjitter=AudioTrack.getMinBufferSize(samp_rate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioTracktrack=newAudioTrack(AudioManager.STREAM_VOICE_CALL,samp_rate,AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT,
maxjitter,AudioTrack.MODE_STREAM);
track.play();
try{
while(ulawRunning)
{
byte[]dataForDecode=newbyte[0];
try{
dataForDecode=inputQueue.take();
}catch(InterruptedExceptione){
}
short[]audioData=newshort[dataForDecode.length];
//decode
G711.ulaw2linear(dataForDecode,audioData,audioData.length);
Log.d(TAG,"audioData="+Utils.toHex(audioData));
//play
track.write(audioData,0,audioData.length);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
track.release();
track=null;
}
}
};
Runnableulaw_encode=newRunnable(){
publicvoidrun(){
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
AudioRecordrecord=getAudioRecord();
intframe_size=160;
// intframe_rate=8000/frame_size;
// longframe_period=1000/frame_rate;
short[]audioData=newshort[frame_size];
byte[]encodeData=newbyte[frame_size];
intnum=0;
try{
while(ulawRunning)
{
num=record.read(audioData,0,frame_size);
if(num<=0)continue;
calc2(audioData,0,num);
//进行pcmu编码
G711.linear2ulaw(audioData,0,encodeData,num);
//send
session.sendAudioData(encodeData);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
record.release();
}
}
};
voidcalc2(short[]lin,intoff,intlen){
inti,j;
for(i=0;i<len;i++){
j=lin[i+off];
lin[i+off]=(short)(j>>1);
}
}
privatevoilaw_recored(){
newThread(ulaw_encode).start();
}
(){
intsamp_rate=8000;
intmin=AudioRecord.getMinBufferSize(samp_rate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
Log.e(TAG,"minbuffersize:"+min);
AudioRecordrecord=null;
record=newAudioRecord(
MediaRecorder.AudioSource.MIC,//therecordingsource
samp_rate,//采样频率,一般为8000hz/s
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
min);
record.startRecording();
returnrecord;
}
❻ android语音聊天软件怎么实现
介绍使用较广的三款语音聊天软件:
1.YY语音最早用于魔兽玩家的团队语音指挥通话,逐渐吸引了部分传奇私服用户,最后发展为穿越火线游戏用户必备的团队语音工具,笔者曾在穿越火线游戏中目测,99%的战队收人广告后面都挂着YY语音ID。2009年初YY娱乐用户已经形成了可以和游戏用户抗衡的用户群,YY语音的娱乐公会开始逐步超越游戏公会,人气也日渐增长。时至今日,YY语音已经成为集合团队语音、好友聊天、视频功能、频道K歌、视频直播、YY群聊天、应用游戏、在线影视等功能为一体的综合型即时通讯软件。
2.腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件。腾讯QQ支持在线聊天、视频通话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,并可与多种通讯终端相连。2015年,QQ继续为用户创造良好的通讯体验。其标志是一只戴着红色围巾的小企鹅。目前QQ已经覆盖Microsoft Windows、OS X、Android、iOS、Windows Phone等多种主流平台。
3.微信 (WeChat)
是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,微信支持跨通信运营商、跨操作系统平台通过网络快速发送免费(需
消耗少量网络流量)语音短信、视频、图片和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“漂流瓶”、“朋友圈”、”
公众平台“、”语音记事本“等服务插件。截止到2015年第一季度,微信已经覆盖中国 90% 以上的智能手机,月活跃用户达到 5.49 亿,用户覆盖
200 多个国家、超过 20 种语言。此外,各品牌的微信公众账号总数已经超过 800 万个,移动应用对接数量超过 85000
个,微信支付用户则达到了 4 亿左右。
❼ 网络监控摄像头音频编码用aac好还是G.711A好。哪个编码类型的音质好
现在的海康已经支持MPEG格式,MP2是最佳录音格式,支持44100采样,16位单双通道,192K码流,录音质量十分接近CD效果,只是内置麦克风是单声道,外置是双通道就是CD音质。G711码流只有64K(最大值,通常是56K)音质压缩的太狠,损失太多。虽然有AAC选项,但不及MP2格式质量好。
❽ 网络中 G729 的 160 与 G711 的 20 分别代表什么意思是 G729 协议 的 Header 占了 160 个字节吗
G.711
G.711也称为PCM(脉冲编码调制),是国际电信联盟订定出来的一套语音压缩标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号。 起压缩率为1:2, 即把16位数据压缩成8位。G.711是主流的波形声音编解码器。G.711 标准下主要有两种压缩算法。一种是µ-law algorithm (又称often u-law, ulaw, mu-law),主要运用于北美和日本;另一种是A-law algorithm,主要运用于欧洲和世界其他地区。其中,后者是特别设计用来方便计算机处理的。G711 G723 G729线路占多少带宽问题带宽=包长度×每秒包数=包长度×(1/打包周期)=(Ethernet头+IP头+UDP头+RTP头+有效载荷)×(1/打包周期)=(208bit +160bit+64bit+96bit +有效载荷)×(1/打包周期)=(528bit+(打包周期(秒)×每秒的比特数))×(1/打包周期)=( 528 / 打包周期 ) + 每秒比特数按照上面的计算公式:G711:20ms打包,带宽为 ( 528/20 + 64) Kbit/s=90.4 Kbit/sG729:20ms打包,带宽为 ( 528/20 + 8 ) Kbit/s= 34.4 Kbit/sG723:5.3k,30ms打包,带宽为 ( 528/30 + 5.3 ) Kbit/s=22.9 Kbit/s业界一般按照下表提供的IP网带宽系数和以太网带宽系数来设计网络带宽:
编解码技术压缩速率(Kbps)打包周期(ms)IP网带宽系数以太网带宽系数G.711 a/u64201.251.41G.729 a/b8200.380.54G.723.1(5.3kbit/s)5.3300.270.37G.723.1(6.3Kbit/s)6.3300.250.36H.263(384Kbit/s)≈3841066.2
注:采用某种编码方式时,用64K乘以相应的带宽系数就可以得出其实际占用的带宽。当然如果是中继接口,还需要考虑信令占据一定的带宽,一般按照2.5%来计算。如果看不懂上面的计算方法,只需记住以下结果:G711 实际占用带宽 每线90.4kbit/s 100线并发占用 9MbpsG729 实际占用带宽 每线34.4kbit/s 100线并发占用 3.4MbpsG723 实际占用带宽 每线22.9kbit/s 100线并发占用 2.2Mbps
网络G729 HTTP/IP找到的,我也不知道g729 g711什么东西
❾ 网络摄像机 音频编码 g.711alaw g.711ulaw 选择哪个好
G.711是语音模拟信号的一种非线性量化,细分有二种:G.711 A-law 和 G.711 u-law。不同的国家和地方都会选取一种作为自己的标准。G.711 bitrate 是64kbps。详细的资料可以在ITU 上下到相关的spec,下面主要列出一些性能参数:
G.711(PCM方式:PCM=脉码调制 :Pulse Code Molation)
采样率:8kHz
信息量:64kbps/channel
理论延迟:0.125msec
品质:MOS值4.10