日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Camera 预览及录制视频 附demo

發(fā)布時(shí)間:2023/12/18 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Camera 预览及录制视频 附demo 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1. 打開Camera:
    • 2. 連接預(yù)覽:
    • 3. 啟動(dòng)預(yù)覽:
    • 4. 啟動(dòng)視頻錄像:
      • 4.1. 給Camera對象解鎖:
      • 4.2. 配置MediaRecorder對象:
        • 4.2.1. setCamera():
        • 4.2.2. setAudiioSource():
        • 4.2.3. setVideoSource():
        • 4.2.4. 設(shè)置視頻的輸出格式和編碼:
          • 4.2.4.I.setOutputFormat():
          • 4.2.4.II. setAudioEncoder():
          • 4.2.4.III.setVideoEncoder():
        • 4.2.5. setOutputFile():
        • 4.2.6. setPreviewDisplay():
        • 警告:
      • 4.3. 準(zhǔn)備MediaRecorder對象:
      • 4.4. 啟動(dòng)MediaRecorder對象:
    • 5. 停止視頻錄像:
      • 5.1. 停止MediaRecorder對象:
      • 5.2. 重置MediaRecorder對象:
      • 5.3. 釋放MediaRecorder對象:
      • 5.4. 鎖定Camera對象:
    • 6. 停止預(yù)覽:
    • 7. 釋放Camera對象:
    • GitHub地址如下:


使用Android框架采集視頻需要認(rèn)真的管理Camera對象,以及跟MediaRecorder類的協(xié)調(diào)。當(dāng)使用Camera對象記錄視頻時(shí),除了Camera.open()和Camera.release()方法的調(diào)用以外,還必須管理Camera.lock()和Camera.unlock()方法的調(diào)用,從而允許MediaRecorder對象訪問Camera硬件。

采集視頻需要一定的調(diào)用順序,必須按照一個(gè)特定執(zhí)行順序來準(zhǔn)備和采集視頻,詳細(xì)如下:


1. 打開Camera:

使用Camera.open()方法來獲得一個(gè)Camera對象的實(shí)例。

2. 連接預(yù)覽:

使用Camera.setPreviewDisplay()方法把SurfaceView跟Camera連接起來,準(zhǔn)備一個(gè)實(shí)時(shí)的Camera圖像預(yù)覽界面。
設(shè)置預(yù)覽中demo設(shè)置的是圓形的預(yù)覽框,詳情可參考繪制圓形surfaceview

3. 啟動(dòng)預(yù)覽:

調(diào)用Camera.starPreview()方法開始顯示實(shí)時(shí)的Camera圖像。

4. 啟動(dòng)視頻錄像:

為了成功的記錄視頻,必須完成以下步驟。

4.1. 給Camera對象解鎖:

通過調(diào)用Camera.unlock()方法給由MediaRecorder對象使用的Camera對象解鎖。

4.2. 配置MediaRecorder對象:

在這一步中要調(diào)用以下MediaRecorder方法。更多信息,請看MediaRecorder參考文檔。

4.2.1. setCamera():

使用應(yīng)用程序當(dāng)前的Camera實(shí)例,把它設(shè)置成用于視頻采集;

4.2.2. setAudiioSource():

使用MediaRecorder.AudioSource.CAMCORDER,設(shè)置音頻源;

4.2.3. setVideoSource():

使用MediaRecorder.VideoSource.CAMERA來設(shè)置視頻源;

4.2.4. 設(shè)置視頻的輸出格式和編碼:

對于Android2.2以上的版本,要使用MediaRecorder.setProfile方法,并且要私用CamcorderProfile.get()方法來獲得一個(gè)Profile的示例。對于Android2.2以前的版本,必須要設(shè)置視頻輸出的格式和編碼參數(shù):

4.2.4.I.setOutputFormat():

設(shè)置輸出格式,指定默認(rèn)設(shè)置,或者是MediaRecorder.OutputFormat.MPEG_4;

4.2.4.II. setAudioEncoder():

設(shè)置聲音的編碼類型,指定默認(rèn)設(shè)置,或者是MediaRecorder.AudioEncoder.AMR_NB;

4.2.4.III.setVideoEncoder():

設(shè)置視頻的編碼類型,指定默認(rèn)設(shè)置,或者是MediaRecorder.VideoEncoder.MPEG_4_SP;

4.2.5. setOutputFile():

設(shè)置輸出文件,可以使用下文“保存媒體文件”中的示例代碼中的getOutputMediaFile(MEDIA_TYPE_VIDEO).toString()方法來獲取輸出文件路徑。

4.2.6. setPreviewDisplay():

給應(yīng)用程序指定SurfaceView的預(yù)覽布局。要使用與連接預(yù)覽相同的對象。

警告:

這步中必須要調(diào)用MediaRecorder的配置方法,否則你的應(yīng)用程序?qū)?huì)發(fā)生錯(cuò)誤,并且錄像也會(huì)失敗。

4.3. 準(zhǔn)備MediaRecorder對象:

通過調(diào)用MediaRecorder.prepare()方法,準(zhǔn)備給MediaRecorder對象提供的配置設(shè)置。

4.4. 啟動(dòng)MediaRecorder對象:

通過調(diào)用MediaRecorder.star()方法來記錄視頻。

5. 停止視頻錄像:

在這步中要調(diào)用以下方法來成功完成視頻記錄:

5.1. 停止MediaRecorder對象:

通過調(diào)用MediaRecorder.stop()方法來停止視頻采集

5.2. 重置MediaRecorder對象:

可選操作,通過調(diào)用MediaRecorder.reset()方法來刪除記錄器的配置設(shè)置。

5.3. 釋放MediaRecorder對象:

調(diào)用MediaRecorder.release()方法來釋放MediaRecorder對象。

5.4. 鎖定Camera對象:

調(diào)用Camera.lock()方法來鎖定Camera對象,以便MediaRecorder會(huì)話能夠繼續(xù)使用它。從Android4.0(API Level 14)開始,這個(gè)調(diào)用不再需要了,除非MediaRecorder.prepare()方法調(diào)用失敗。

6. 停止預(yù)覽:

當(dāng)Activity使用完Camera對象時(shí),要使用Camera.stopPreview()方法來停止預(yù)覽。

7. 釋放Camera對象:

調(diào)用Camera.release()方法來釋放Camera對象,以便其他應(yīng)用程序能夠使用它。

提示:如果你的應(yīng)用程序被用于典型的視頻記錄,那么在啟動(dòng)預(yù)覽期間,把setRecordingHint(boolean)方法設(shè)置為true,這樣有助于減少啟動(dòng)采集所需要的時(shí)間。

我的Demo寫的比較簡單,原本是想只當(dāng)做圓形預(yù)覽框的分享,后干脆加個(gè)錄視頻和嘗試預(yù)覽幀的處理。

GitHub地址如下:

https://github.com/qunqunstyle/multithreading

注:點(diǎn)擊圓框可錄制,可切換前后相機(jī),這個(gè)demo只是為了示意預(yù)覽幀onPreviewframe回調(diào)和錄制視頻的流程,在兩者的切換時(shí)可能會(huì)有異常。

總結(jié)

以上是生活随笔為你收集整理的Android Camera 预览及录制视频 附demo的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。