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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將實(shí)時(shí)Android音頻流傳輸?shù)椒?wù)器

將實(shí)時(shí)Android音頻流傳輸?shù)椒?wù)器

我目前正在嘗試將直播麥克風(fēng)音頻從Android設(shè)備流式傳輸?shù)絁ava程序。我首先在兩個(gè)android設(shè)備之間發(fā)送實(shí)時(shí)音頻,以確認(rèn)我的方法正確。在接收設(shè)備上幾乎沒(méi)有任何延遲地可以完美地聽(tīng)到音頻。接下來(lái),我將相同的音頻流發(fā)送到一個(gè)小型Java程序,并驗(yàn)證了數(shù)據(jù)也已正確發(fā)送到此處。現(xiàn)在,我想要做的是對(duì)這些數(shù)據(jù)進(jìn)行編碼,并以某種方式在運(yùn)行Java程序的服務(wù)器上對(duì)其進(jìn)行回放。我寧愿在使用HTML5或JavaScript的網(wǎng)絡(luò)瀏覽器中播放它,但可以使用VLC等替代方法。這是發(fā)送實(shí)時(shí)麥克風(fēng)音頻的Android應(yīng)用的代碼public class MainActivity extends Activity {private Button startButton,stopButton;public byte[] buffer;public static DatagramSocket socket;    AudioRecord recorder;private int sampleRate = 44100;   private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;    private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;       int minBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);    private boolean status = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);     startButton = (Button) findViewById (R.id.start_button);     stopButton = (Button) findViewById (R.id.stop_button);     startButton.setOnClickListener(startListener);     stopButton.setOnClickListener(stopListener);     minBufSize += 2048;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.main, menu);    return true;}這是Java程序讀取數(shù)據(jù)的代碼。class Server{   public static void main(String args[]) throws Exception      {         DatagramSocket serverSocket = new DatagramSocket(50005);            byte[] receiveData = new byte[1024];            byte[] sendData = new byte[1024];            while(true)               {                  DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);              serverSocket.receive(receivePacket);              String sentence = new String( receivePacket.getData().toString());              System.out.println("RECEIVED: " + sentence);           }  }}我知道在將音頻發(fā)送到Java程序之前,應(yīng)該先在應(yīng)用程序端對(duì)音頻進(jìn)行編碼,但是我不確定在使用AudioRecorder時(shí)如何進(jìn)行編碼。我寧愿不使用NDK,因?yàn)槲覜](méi)有使用它的經(jīng)驗(yàn),也沒(méi)有足夠的時(shí)間學(xué)習(xí)如何使用它。...:)
查看完整描述

3 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

由于您的android代碼中的以下行,聲音被打斷了:


minBufSize += 2048;

您只是添加空字節(jié)。另外,使用CHANNEL_IN_MONO代替CHANNEL_CONFIGURATION_MONO


查看完整回答
反對(duì) 回復(fù) 2020-02-04
  • 3 回答
  • 0 關(guān)注
  • 1773 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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