MediaRecorder與MediaPlayer步驟

來源:互聯網
上載者:User

MediaRecorder音頻錄製步驟:

1    建立MediaRecorder對象

MediaRecorder mr=new MediaRecorder();

2    設定錄音的來源

mr.setAudioSource(MediaRecorder.AudioSource.MIC);//一般使用麥克風

3    設定輸出格式

mr.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);

4    設定編碼格式

mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

    設定編碼位率

//mr.setAudioEncodeingBitRate(int bitRate);

    設定採樣率

//mr.setAudioAudioSamling(int samplingRate);

5    設定儲存位置

mr.setOutputFile("/sdcard/recorder.amr");

6    錄製準備

mr.prepare();

7 開始錄製

mr.start();

錄製完成之後

8 停止錄製

mr.stop();

9 釋放資源

mr.release();

MediaPlayer音頻播放步驟:

1 建立MediaPlayer對象MediaPlayer mp=new MediaPlayer();

或者直接建立制定檔案
MediaPlayer mp=MediaPlayer.create(context,R.raw.music);//如果採用此方法建立則可以跳過2、3兩個步驟

2 設定播放檔案
mp.setDataSource("/sdcard/recorder.amr");

//參數可以為檔案路徑("/sdcard/music.mp3")、網路URL("http://www.../music.mp3")、res/raw下面的音頻檔案(context,R.raw.music)等

3 播放準備(同步)
mp.prepare();

播放準備(非同步)mp.prepareAsunc();

4 開始播放
mp.start();

暫停播放//mp.pause();

5 停止播放
mp.stop();

6 釋放資源
mp.release();

TIP:

定位 mp.seekTo(int);

取得當前位置
mp.getCurrentPosition();

取得總長 mp.getDuration();

當需要用播放定位時,調用mp.seekTo(int position)函數不知道position應該是多少。由於FPS的不同,給固定的int值很不準確。

於是乎,想到了用百分比來確定位置。我們可以調用mp.getDuration();函數來擷取該資源的總長度,該長度官方定義為毫秒但是應該不準確。不過它的值與seekTo函數中的int是對應的。


比如要定義到15%的位置:

int position=(int)(mp.getDuration()*0.15);

mp.seekTo(position);

mp.start();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.