第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

開發(fā)語音通信APP時遇到的音質(zhì)劣化問題

開發(fā)語音通信APP時遇到的音質(zhì)劣化問題

慕田峪4524236 2019-03-20 22:18:39
程序的部分結(jié)構(gòu)是這樣的:錄制語音的線程每得到960字節(jié)的語音數(shù)據(jù),就發(fā)給處理線程的Handler,在handleMessage()中對語音數(shù)據(jù)進(jìn)行處理但是,就在發(fā)給handler到從handler取出,語音就發(fā)生了劣化。下面給出代碼與代碼解釋。在錄制語音的線程中,對AudioRecord對象設(shè)置OnRecordPositionUpdateListener,在 onPeriodicNotification()取出數(shù)據(jù):recorder.setPositionNotificationPeriod(480);//480frames = 960 bytes recorder.setRecordPositionUpdateListener(new MyUpdateListener());OnRecordPositionUpdateListener實(shí)現(xiàn)是這樣的:class MyUpdateListener implements OnRecordPositionUpdateListener{        byte[][] samples = new byte[10][960];        int i = 0;        int bytesRead;        Bundle data;        Message msg;        @Override        public void onPeriodicNotification(AudioRecord recorder) {            bytesRead = recorder.read(samples[i], 0, 960);            if (bytesRead != 960) {                Log.e(TAG, "bytesRead不是960");            }            try {                fos.write(samples[i], 0, bytesRead);            } catch (IOException e) {                Log.e(TAG,"File Write Error");                e.printStackTrace();            }            data = new Bundle();            data.putByteArray(CommonConfig.lock, samples[i]);            msg = handler.obtainMessage();            msg.setData(data);            msg.sendToTarget();            i = i++ % 10;//錯誤,這樣寫和i = i % 10一樣        }    }fos是一個FileOutputStream對象,用來保存錄得的語音;CommonConfig.lock是一個static final String。handler的handleMessage()是這樣的:public void handleMessage(Message msg) {        byte[] buffer = null;        buffer = msg.getData().getByteArray(CommonConfig.lock);        if(buffer.length != 960){            Log.e(TAG,"buffer.length != 960");        }        try {            fos.write(buffer, 0, buffer.length);        } catch (IOException e) {            Log.e(TAG,"File Write Error");            e.printStackTrace();        }        //...其他處理...    }此處的fos是另一個FileOutputStream對象,與上一個fos一樣,保存的文件都為.pcm。在PC上Cool Edit Pro打開兩個PCM文件,發(fā)現(xiàn)音質(zhì)已經(jīng)發(fā)生了劣化,具體表現(xiàn)為聲音有些發(fā)顫。有人能解釋下這是為什么么?還是我的實(shí)現(xiàn)哪里有問題?
查看完整描述

2 回答

?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊

知道哪邊出錯了。不應(yīng)該是i = i++ % 10,這樣寫和i = i % 10一樣。i增一的操作是在求余和賦值之間進(jìn)行的。
改成i = ++i % 10聲音就正常了。

查看完整回答
反對 回復(fù) 2019-04-15
?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊

在手機(jī)上正常的錄音,在Cool Edit Pro上會發(fā)生聲音與錄音不同的現(xiàn)象.


查看完整回答
反對 回復(fù) 2019-04-15
  • 2 回答
  • 0 關(guān)注
  • 936 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號