導航:首頁 > 操作系統 > androidg711音頻編碼

androidg711音頻編碼

發布時間:2022-07-14 12:59:34

❶ 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

閱讀全文

與androidg711音頻編碼相關的資料

熱點內容
6軸機器人演算法 瀏覽:890
手機主題照片在哪個文件夾 瀏覽:294
安卓手機後期用什麼軟體調色 瀏覽:628
cad修改快捷鍵的命令 瀏覽:242
好錢包app怎麼登錄不了 瀏覽:859
樹莓派都用python不用c 瀏覽:757
access文件夾樹的構造 瀏覽:662
安卓多指操作怎麼設置 瀏覽:658
linux樹形目錄 瀏覽:727
平方根的簡單演算法 瀏覽:898
千牛訂單頁面信息加密取消 瀏覽:558
單片機自製紅外遙控燈 瀏覽:719
伺服器最小配置怎麼弄 瀏覽:853
ibm伺服器硬體如何升級 瀏覽:923
全球程序員節點贊 瀏覽:986
php函數傳遞數組 瀏覽:632
人工峰群演算法的目標函數 瀏覽:468
如何刪加密文檔 瀏覽:105
塗鴉app一鍵執行如何刪除 瀏覽:756
安卓手機如何打開fr3文件 瀏覽:743