Android音頻視頻開發

來源:互聯網
上載者:User

 視頻錄製功能正在走來,在Androidsdk中有與之相關的類:android.media.MediaRecorder當然,因為模擬器上沒有提供必要的硬體設施,所以在學習過程中並不能實現。Media能夠播放來自任何地方的檔案:一個實際的檔案資源?系統中的一個檔案或者是一個可用的網路連結。

 

2.1如何播放media音頻

1、將檔案放到你的工程的res/raw檔案夾中,在這個檔案夾中,Eclipse外掛程式將會找到它,同時,會將這個資源與你的R

2、建立一個MediaPlayer,並使用MediaPlayer.create與資源相關聯起來,之後在執行個體中使用start()方法。例如:MediaPlayer mp=MediaPlayer.create(context,R.raw.sound_file_1);mp.start();

如果要想停止播放,使用stop()方法。如果你想稍後重新播放這段media,你必須

在再次使用start()方法之前使用reset()方法和prepare()方法來操作MediaPlayer對象。(create()第一次調用prepare())如果想暫停播放,可以使用pause()方法。在你暫停地方恢複播放功能使用start()方法即可實現。

 

下面介紹如何播放一個檔案:

1、用new建立一個MediaPlayer執行個體;

2、調用setDataSource()方法,這個方法有一個String類型的參數,這個String類型的參數包含了你所要播放的檔案的路徑-本地檔案系統或者是URL;

3、之後,先調用prepare()方法,然後才是start()方法。

Java代碼:

 

1.MediaPlayer mp=new MediaPlayer();

2.mp.setDataSource(PATH_TO_FILE);

3.mp.prepare();

4.mp.start();

5.需要注意的一點是:如果你傳遞的是一個URL方式的檔案,那麼這個檔案必須是可以下載的,並且是不間斷的,簡單地說就是在播放的同時進行著下載。

 

2.2如何錄製media音頻資源

1、使用new建立一個執行個體android.media.MediaRecorder;

2、建立一個android.content.ContentValues執行個體並設定一些標準的屬性,像TITLE,

TIMESTAMP,最重要的是MIME_TYPE;

3、建立一個要放置的檔案的路徑,這可以通過android.content.ContentResolver在內容資料庫中來建立一個入口,並且自動地標誌一個取得這個檔案的路徑。

4、使用MediaRecorder.setAudioSource()方法來設定音頻資源;這將會很可能使用到MediaRecorder.AudioSource.MIC;

5、使用MediaRecorder.setOutputFormat()方法設定輸出檔案格式;

6、用MediaRecorder.setAudioEncoder()方法來設定音頻編碼;

7、最後,prepare()和start()所錄製的音頻,stop()和release()在要結束的時候調用。

 

2.3執行個體分析

Java代碼:

1.recorder=new MediaRecorder();

2.ContentValues values=newContentValues(3);

3.values.put(MediaStore.MediaColumns.TITLE,SOME_NAME_HERE);

4.values.put(MediaStore.MediaColumns.TIMESTAMP,System.currentTimeMillis());

5.values.put(MediaStore.MediaColumns.MIME_TYPE,recorder.getMimeContentType();

6.ContentResolver contentResolver=newContentResolver();

7.Uribase=MediaStore.Audio.INTERNAL_CONTENT_URI;

8.UrinewUri=contentResolver.insert(base,values);

9.//在所給定的URL中向一個表格插入一列資料

10.//函數原型:final Uri insert(Url,ContentValues values);

11.if(newUri==null){

12.//這裡需要異常處理,我們在這裡不能建立一個新的內容入口

13.}

14.Stringpath=contentResolver.getDataFilePath(newUri);

15.//可以使用setPreviewDisplay()來陳列一個preview來使View適合

16.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

17.recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

18.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

19.recorder.setOutputFile(path);

20.recorder.prepare();

21.recorder.start();

停止錄製:

Java代碼:

1.recorder.stop();

2.recorder.release();

在錄製音頻資源的過程中,使用到了ContentValues這個類,下面來解說這個類。

ContentValues這個類是用來儲存一系列的值的,這些值要求ContentResolver能夠

process的。

ContentValues(int size)建構函式使用所給定的初始值建立一個空系列的值。

ContentValues(ContentValues from)這個建構函式建立一個從給定的ContentValues中

來進行複製所產生的值。

這個類有如下的常用方法:

void clear()刪除所有的值

boolean containsKey(String key)如果這個對象有已命名的值就返回真

int describeContents()描述實值型別

Object get(String key)獲得值

void put(String key,Integer value)增加一個值到對應的set中

還有一個類就是ContentResolver,這個類想內容模型提供了應用程式資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.